如何在on_message discord.py中扮演角色?

时间:2020-08-15 08:36:42

标签: python discord.py

那是可以帮助理解的代码,它是一个异步分支,但是部分代码是从rewrite分支复制的,不确定它是否可以帮助 如果邮件包含"test",该如何发挥作用?

import discord
from discord.ext import commands
import asyncio
import re

TOKEN = ""

bot = commands.Bot(command_prefix = "{")

@bot.event
async def on_message(ctx):
 user = ctx.author
 if "test" in ctx.content:
                                      #part from rewrite branch (copied from Internet)
    member = ctx.author
    role = discord.utils.get(member.roles, name="Test")
    await user.add_roles(member, role)
 await bot.process_commands(ctx) #to let commands work
    

bot.run(TOKEN)

discord.errors.NotFound:找不到404(错误代码:10011):未知角色

错误在哪里?如果有更好的方法来执行此代码,那么它是什么? P.S角色测试确实存在,所以没有错误

2 个答案:

答案 0 :(得分:0)

如果有成员对象,则可以执行以下操作:

await member.add_roles("test")

答案 1 :(得分:0)

请考虑阅读this一次。

on_message不接受ctx作为其参数,而是接受一个message参数,这是使用它的方法-

@bot.event()
async def on_message(message):
    if "test" in message.content:
        role = discord.utils.get(message.guild.roles, name="test")
        await message.author.add_roles(role)
    await bot.process_commands(message)
 

注意-:确保您在名为test的服务器中具有角色。

如果有任何错误,请告诉我:)