如何使bot DM成为人员列表? (Discord.py)(重写)

时间:2018-10-29 11:51:31

标签: python-3.x discord.py discord.py-rewrite

因此,这会将DM发送给我提及的任何人。

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

我该如何更改它以在文本文件或包含用户ID的列表变量中发送ID列表消息?

换句话说,如何用一个命令向多个人发送消息?

2 个答案:

答案 0 :(得分:1)

如果存在指定的ID值,则可以使用Client.get_user_info获取User类。

这里是如何完成此操作的示例。

@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

答案 1 :(得分:0)

如果要从命令中向多个人发送消息,则可以使用新的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!