Discord.py on_member_join和on_member_leave无法正常工作

时间:2020-05-31 22:05:22

标签: discord discord.py discord.py-rewrite

我最近开始使用discord.py(不是discord.ext命令,仅导入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')

我还添加了“ 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')

现在,在添加了一些用于调试的打印后,我发现on_member_join和on_member_leave从未被调用,但是当我键入命令时,机器人会编辑通道的名称。那是一个语音频道,显示会员人数。没有任何错误。我看错API了吗?请帮忙

4 个答案:

答案 0 :(得分:2)

不一致的任何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')

答案 1 :(得分:0)

答案是,他们每10分钟向频道添加2个编辑限制。我收到通知,这个问题的浏览量超过2k

答案 2 :(得分:0)

我不完全确定,但您的 on_member_join 和 on_member_leave 不工作的原因可能是因为意图未通过。

import discord
intents = discord.Intents.all()

client = discord.Client(intents = intents)

然后您想在机器人应用程序中启用服务器意图。我在制作机器人时也遇到了这个问题

答案 3 :(得分:0)

您需要在不和谐开发者门户中设置意图 那么代码就会像这样

import discord
from discord.ext import commands
intents = discord.Intents.all()

bot = commands.Bot(command_prefix=".", intents=intents)

etc