使用Python Discord Bot发消息显示我为作者,如何以Bot身份发送?
解决Discord Bot以自身身份发送消息并编辑的问题
你当前代码里打印的ctx.message.author是触发命令的用户消息的作者,不是Bot发送的消息的作者。ctx.channel.send()本身就是以Bot身份发送消息的,问题出在你没捕获Bot发送的那条消息对象,导致后续无法编辑。
修改代码,捕获Bot发送的消息对象即可:
@bot.command(name="send") async def send(ctx: Context) -> None: message_content = "message" # 捕获Bot发送的消息对象 bot_message = await ctx.channel.send(message_content) # 打印Bot自身(这条消息的作者) print(bot_message.author) # 后续可以编辑Bot发送的这条消息 await bot_message.edit(content="编辑后的消息内容")
关键说明:
ctx.message是用户输入命令时发送的那条消息,它的author必然是发起命令的用户ctx.channel.send()的返回值是Bot刚发送的消息对象,这个对象的author就是Bot账号本身- 要编辑Bot发送的消息,必须通过这个返回的消息对象调用
edit()方法,而不是用ctx.message
内容的提问来源于stack exchange,提问作者Peloucvo
相关产品推荐
相关产品推荐

