首页 > 解决方案 > 使用命令为多个用户分配角色 - discord.py

问题描述

我正在制作一个不和谐的机器人,我希望机器人在特定频道中运行命令。例如,y角色被赋予了许多人。我该怎么做呢?

标签: pythonpython-3.xdiscorddiscord.pydiscord.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)。将尝试将以下参数转换为成员。

随意添加您希望添加的任何错误处理。例如,可能没有找到角色,或者没有给定成员等。


参考:


推荐阅读