【发布时间】:2021-02-22 21:43:54
【问题描述】:
下面给出的代码在以下情况下可以正常工作:
- 我启动机器人
- 用户加入服务器 => 我得到用户名
- 用户离开服务器 => 我得到了离开的成员的用户名
但是当我有这样的顺序时:
- 我启动机器人
- 用户加入服务器 => 我得到用户名
- 我重新启动机器人:将其关闭然后再打开
- 用户离开服务器 => 我没有得到用户名
我有带有用户名的数据库,所以在用户离开后,我需要将他从数据库中删除。例如,当我部署更新的机器人版本时,机器人会重新启动。这是我的代码:
import discord
from discord.ext import commands, tasks
intents = discord.Intents(messages=True, members=True)
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.event
async def on_member_join(member):
username = member.name
await member.send('Hello')
print(username)
@bot.event
async def on_member_remove(member):
username = member.name
print(username)
bot.run('TOKEN')
我正在使用 discord.py 1.5.0。我该如何解决这个问题?
【问题讨论】:
-
我将您的代码复制到我的测试机器人中,但无法重现您的问题。我唯一能想到的是,当您的成员离开时,您的机器人可能还没有“准备好”?尝试添加一个
on_ready事件,以便您知道您的机器人已加载。在我的机器人上进行测试,我将其关闭并打开了几次,它总是会给我用户名 -
@AbdurJ 我正在使用
on_ready,当它准备好时我有一条消息,但我仍然有同样的问题:当成员在机器人重新启动后离开服务器时,我没有与成员的消息名字。 -
我已经尝试了好几次,但我似乎无法重现您的问题。我做的测试短视频:link
-
@AbdurJ 谢谢你的视频!这对我来说很奇怪。我会尝试在另一台机器上运行我的代码
标签: python python-3.x discord.py discord.py-rewrite