on_member_join 即使有意图也不起作用

时间:2021-04-04 21:45:05

标签: discord.py

我正在为我的服务器制作一个机器人,我希望它自动为刚加入的成员分配一个角色。我在谷歌上四处寻找答案,它说要使用意图。我使用了它们,甚至在开发门户中搞砸了,但它仍然无法正常工作。

import discord
from discord.utils import get

bot = discord.Client(intents=intents)
bot = commands.Bot(command_prefix="!")
Default_Role = 'Starineer'

@bot.event
async def on_member_join(member):
    role = get(member.guild.roles, name=Default_Role)
    await member.add_roles(role)

(如果我将 bot = discord.Client(intents=intents) 更改为 client = discord.Client(intents=intents) 我的命令将不起作用)

1 个答案:

答案 0 :(得分:3)

不能定义 bot 两次。请决定您要使用什么。

其次,您必须通过 discord.utils.get 获取角色,仅传递名称是行不通的。

这是一个例子:

from discord.utils import get

intents = discord.Intents.default()
intents.members = True
client = commands.Bot(command_prefix="YourPrefix", intents=intents)

@client.event / @bot.event # Depends on how you defined it
async def on_member_join(member):
    role = discord.utils.get(member.guild.roles, name="Test") # Get the role (ID works too)
    await member.add_roles(role) # Add the role
    print(f"{role} assigned to {member}!")

记住还要将意图导入到您的代码中,而不仅仅是激活它们。如果你像在例子中那样做,你会没事的。

我们做了什么:

  • 通过名称或ID获取角色-> name="Test"/id=RoleID
  • 导入 discord.utils.get 以获得角色。
  • 打印结果看是否有效。