如何使机器人 DM 成为人员列表? (Discord.py)(重写)
How to make a bot DM a list of people? (Discord.py) (Rewrite)
所以这会向我@mention 的任何人发送 DM。
@bot.command(pass_context=True)
async def pm(ctx, user: discord.User):
await user.send('hello')
我怎样才能将其更改为在比方说文本文件或包含用户 ID 的列表变量中发送 ID 列表消息?
换句话说,如何通过一条命令向多人发送消息?
您可以使用 Client.get_user_info
获取指定 ID 值的 User
class(如果存在)。
这是一个如何做到这一点的例子。
@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
如果您想通过命令向多人发送消息,可以使用新的 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!
所以这会向我@mention 的任何人发送 DM。
@bot.command(pass_context=True)
async def pm(ctx, user: discord.User):
await user.send('hello')
我怎样才能将其更改为在比方说文本文件或包含用户 ID 的列表变量中发送 ID 列表消息?
换句话说,如何通过一条命令向多人发送消息?
您可以使用 Client.get_user_info
获取指定 ID 值的 User
class(如果存在)。
这是一个如何做到这一点的例子。
@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
如果您想通过命令向多人发送消息,可以使用新的 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!