Discord.py 如何为成员添加角色

时间:2021-05-04 05:34:00

标签: python discord discord.py

我有这个代码女巫检查当有人“将@user发送到法庭”然后获取提到的人ID和wrights“发送到法庭”但我也尝试让它添加角色“法庭”但它在这里不起作用代码:

import discord
from discord.ext import commands
import ctx

class MyClient(discord.Client):

    async def on_ready(self):
       print('Logged on as', self.user)

    async def on_message(self, message):
        if message.author == self.user:
            return

        messageContent = message.content
        if len(messageContent) > 0:
            if re.search("^send.*court$", messageContent):
                user_id = message.mentions[0].id
                await message.channel.send('sending to court!')
                role = discord.utils.get(server.roles, name="court")
                await client.add_roles(user_id, role)

client = MyClient()
client.run('TOKEN')

1 个答案:

答案 0 :(得分:0)

  1. 您也可以直接在 message.contentlen() 中使用 re.search()(如果您以后不再需要它)

  2. 对于 re.search(),您必须导入 re

  3. 您没有变量 server,因此您不能在 server.roles 中使用它,因为 python 无法从无到有获取服务器

  4. (主要问题)不是 client.add_roles,而是 member.add_roles,您必须使用 Member 对象

修订:

import discord
from discord.ext import commands
import ctx
import re

class MyClient(discord.Client):

    async def on_ready(self):
       print('Logged on as', self.user)

    async def on_message(self, message):
        if message.author == self.user:
            return

        if len(message.content) > 0:
            if re.search("^send.*court$", message.content):
                user = message.mentions[0]
                await message.channel.send('sending to court!')
                role = discord.utils.get(message.guild.roles, name="court")
                await user.add_roles(role)

client = MyClient()
client.run('TOKEN')