mus*_*ica 8 discord discord.py
我开始使用discord.py(不是discord.ext命令,只有import discord)。最近做了一个频道,频道名称显示公会成员人数,每次有人加入或离开都会更新。这是我的代码:
import discord
client = discord.Client()
@client.event
async def on_ready():
print("Bot is ready")
@client.event
async def on_member_join(member):
channel = client.get_channel('channel id here')
await channel.edit(name = 'Member count: {}'.format(channel.guild.member_count()))
@client.event
async def on_member_leave(member):
channel = client.get_channel('channel id here')
await channel.edit(name = 'Member count: {}'.format(channel.guild.member_count()))
client.run('my token here')
Run Code Online (Sandbox Code Playgroud)
我还添加了client.on_message命令,以便机器人可以将该名称编辑为我输入的任何内容。
@client.event
async def on_message(message)
if message.content == 'rename channel':
channel = client.get_channel('channel id here')
await channel.edit(name = 'TEST')
Run Code Online (Sandbox Code Playgroud)
现在,在添加了一些用于调试的打印后,我发现了这一点on_member_join()并且on_member_leave()从未被调用,但是当我键入命令时,机器人会编辑通道的名称。那是一个语音频道,显示成员数量。没有任何错误。我读错了 API 吗?请帮忙
discord 中任何类型的 ID 都应作为整数传递,而不是字符串。此外,discord.Guild.member_count是一个属性,而不是一个方法,所以使用时不要带括号。您还应该使用on_member_remove()代替on_member_leave().
import discord
client = discord.Client()
@client.event
async def on_ready():
print("Bot is ready")
@client.event
async def on_member_join(member):
channel = client.get_channel(ID)
await channel.edit(name = 'Member count: {}'.format(channel.guild.member_count))
@client.event
async def on_member_remove(member):
channel = client.get_channel(ID)
await channel.edit(name = 'Member count: {}'.format(channel.guild.member_count))
client.run('my token here')
Run Code Online (Sandbox Code Playgroud)
小智 1
on_member_join我不完全确定,但你不工作背后的原因on_member_leave可能是因为意图没有被传递。
import discord
intents = discord.Intents.all()
client = discord.Client(intents=intents)
Run Code Online (Sandbox Code Playgroud)
然后您想在机器人应用程序中启用服务器意图。我在制作机器人时也遇到了这个问题。
| 归档时间: |
|
| 查看次数: |
6907 次 |
| 最近记录: |