Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用命令-discord.py将角色分配给多个用户_Python_Python 3.x_Discord_Discord.py_Discord.py Rewrite - Fatal编程技术网

Python 使用命令-discord.py将角色分配给多个用户

Python 使用命令-discord.py将角色分配给多个用户,python,python-3.x,discord,discord.py,discord.py-rewrite,Python,Python 3.x,Discord,Discord.py,Discord.py Rewrite,我正在制作一个discord bot,我希望bot在特定的通道中运行命令。例如,y角色被赋予许多人。如何进行此操作?条件: 我希望bot在特定通道中运行命令 您需要一个条件来检查命令是否在正确的通道中 “y”角色被赋予x个人 您需要遍历成员列表 另一个标准是bot的最高角色高于它试图分配的任何角色 代码: 所以说了这么多,让我们编写一个命令来完成它,假设它不在单独的cog中: import asyncio from discord.ext import commands def

我正在制作一个discord bot,我希望bot在特定的通道中运行命令。例如,
y
角色被赋予许多人。如何进行此操作?

条件: 我希望bot在特定通道中运行命令

  • 您需要一个条件来检查命令是否在正确的通道中
“y”角色被赋予x个人

  • 您需要遍历成员列表
另一个标准是bot的最高角色高于它试图分配的任何角色


代码: 所以说了这么多,让我们编写一个命令来完成它,假设它不在单独的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用户名
它将角色作为第一个参数(可以是名称、提及或ID)。将尝试将以下参数转换为成员

也可以随意添加您希望添加的任何错误处理。例如,可能未找到角色,或未提供任何成员,等等


参考资料:
  • -这将检查每个参数,尝试将其转换为成员,直到无法再转换
  • -是一个协同程序,因此需要等待
  • -也是一个合作项目
  • -将您的机器人分为不同的模块,以便于组织和更好地控制功能