我最近对与不和谐的bot一起工作很感兴趣,从我所看到的来看,这段代码应该可以工作,但事实并非如此。 我只是在玩弄API,因为它很有趣,所以我对此很陌生。我只希望机器人在有人加入时欢迎他们。
import discord
client = discord.Client()
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
channel = client.guilds[0].get_channel(CHANNEL ID)
await channel.send("Bot online")
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('$hello'):
await message.channel.send('Hello!')
@client.event
async def on_member_join(member):
print(f'{member.name} has joined the server')
channel = client.guilds[0].get_channel(CHANNEL ID)
print(channel)
await channel.send(f'{member.name} has joined the server')
@client.event
async def on_member_remove(member):
print(f'{member.name} has left the server')
channel = client.guilds[0].get_channel(CHANNEL ID)
print(channel)
await channel.send(f'{member.name} has left the server')
client.run('TOKEN HERE')
答案 0 :(得分:1)
而不是 member.name 使用 member ,如果这不起作用,请在您有变量的地方添加它 intents = discord.Intents(messages = True, guilds = True, reactor = True, members = True, Presences = True) 客户端 = 命令.Bot(command_prefix = '*', 意图 = 意图)
答案 1 :(得分:0)
您忘记了装饰工的括号。
@client.event
应该是
@client.event()
编辑:显然不是。 OP会提供更多信息时,将更新此答案。
答案 2 :(得分:0)
FOR discord.py> = 1.5
1.5添加了对Gateway Intents的支持,默认情况下,您的机器人无法像以前的版本那样访问公会成员。如果您的漫游器在少于100台服务器中,则无需验证即可启用这些意图。您应该在Discord Developer Portal的Bot页面底部看到这些设置。如果同时启用了两者,则需要像这样更改Client(或commands.Bot)实例化:
intents = discord.Intents.all()
client = discord.Client(intents=intents)
当我对此进行测试时,该事件正在触发,但是我敢打赌,您的问题出在行中:
channel = client.guilds[0].get_channel(CHANNEL ID)
仅使用client.get_channel来确保您实际上正在获取目标频道会更加可靠,不和谐上的所有频道ID都是唯一的,因此您无需使用公会对象。另外,CHANNEL ID
并不是有效的变量,但我猜您只是对其进行了修改。