因此,这会将DM发送给我提及的任何人。
@bot.command(pass_context=True)
async def pm(ctx, user: discord.User):
await user.send('hello')
我该如何更改它以在文本文件或包含用户ID的列表变量中发送ID列表消息?
换句话说,如何用一个命令向多个人发送消息?
答案 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!