【发布时间】:2021-04-08 08:48:48
【问题描述】:
我正在制作一个不和谐机器人,我希望该机器人在特定频道中运行命令。例如,y 角色分配给了许多人。我该怎么做?
【问题讨论】:
标签: python python-3.x discord discord.py discord.py-rewrite
我正在制作一个不和谐机器人,我希望该机器人在特定频道中运行命令。例如,y 角色分配给了许多人。我该怎么做?
【问题讨论】:
标签: python python-3.x discord discord.py discord.py-rewrite
我希望机器人在特定频道中运行命令
“y”角色分配给 x 人
对此的另一个标准是机器人的最高角色高于它尝试分配的任何角色。
说了这么多,让我们编写一个命令来执行它,假设这不会在其单独的 cog 中:
import asyncio
from discord.ext import commands
def is_correct_channel(ctx):
return ctx.channel.id == 112233445566778899
@commands.check(is_correct_channel)
@bot.command()
async def giverole(ctx, role: discord.Role, members: commands.Greedy[discord.Member]):
for m in members:
await m.add_roles(role)
await asyncio.sleep(1) # You don't want to get ratelimited!
await ctx.send("Done!")
!giverole rolename @user#1234 998877665544332211 username
它将角色作为第一个参数(可以是名称、提及或 ID)。将尝试将以下参数转换为成员。
您也可以随意添加您希望添加的任何错误处理。例如,可能没有找到角色,或者没有给定成员等。
commands.check()TextChannel.iddiscord.Rolediscord.Membercommands.Greedy - 这将检查每个参数,尝试将其转换为成员,直到它不能再使用为止。Member.add_roles() - 是协程,因此需要等待。asyncio.sleep() - 也是一个协程。Context.send()【讨论】: