Как сделать бот DM DM списком людей? (Discord.py) (переписать) - PullRequest
0 голосов
/ 29 октября 2018

Так что это отправляет ДМ кому бы я ни упоминал.

@bot.command(pass_context=True)
async def pm(ctx, user: discord.User):
    await user.send('hello')

Как я могу изменить это, чтобы отобразить список идентификаторов, скажем, в текстовом файле, или переменную списка, содержащую идентификаторы пользователей?

Другими словами, как я могу отправлять сообщения нескольким людям одной командой?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Если вы хотите отправить сообщение нескольким людям из команды, вы можете использовать новый конвертер Greedy, чтобы использовать как можно больше аргументов определенного типа. Это немного отличается от синтаксиса *args, поскольку позволяет использовать другие аргументы других типов после него:

from discord.ext.commands import Bot, Greedy
from discord import User

bot = Bot(command_prefix='!')

@bot.command()
async def pm(ctx, users: Greedy[User], *, message):
    for user in users:
        await user.send(message)

bot.run("token")

Использование:

!pm @person1 @person2 @person3 This is my message!
0 голосов
/ 29 октября 2018

Вы можете использовать Client.get_user_info, чтобы получить класс User для указанного значения id, если оно существует.

Вот пример того, как это можно сделать.

@bot.command()
async def pm(ctx):
    user_id_list = [1, 2, 3] # Replace this with list of IDs
    for user_id in user_id_list:
        user = await bot.get_user_info(user_id)
        await user.send('hello')

Также обратите внимание, что вам не нужно pass_context=True, поскольку контекст всегда передается в версии перезаписи discord.py. Смотрите здесь: https://discordpy.readthedocs.io/en/rewrite/migrating.html#context-changes

...