discord.py - 加入/留下消息错误,不起作用



再一次,我的代码没有赶上,我不知道为什么…控制台显示没有错误。

下面是我的代码:
@bot.event
async def on_member_join(member):
channel = bot.get_channel(792786709350973454)
author = ctx.message.author
ico = author.avatar_url
embed = discord.Embed(
color = discord.Color.red(),
)
embed.set_author(name=(f'• Hello {member} on my server!!'))
embed.add_field(name='Warning,', value='read the regulations!', inline=False)
embed.set_footer(text="dBot created by Diablo#4700", icon_url=ico)
await channel.send(embed=embed)

代码片段中有不止一个问题。我将在这里列出它们并进行修复。

  • 首先是主要问题,您正在使用ctx.author.name声明author变量这里的ctx是什么?ctx仅在命令中传递。这是一个事件。它使用member作为参数,你不能在这里使用ctx
  • 其次,下一个问题并不是真正在停止命令输出中起作用,而是你在嵌入作者消息中发送member的问题。再说一遍,member是一个对象你不能直接使用它你必须在成员后面加上属性比如member.namemember.mentionmember.avatar_url

固定代码:

@bot.event
async def on_member_join(member):
channel = bot.get_channel(792786709350973454)
# author = ctx.message.author # first problem, you don't really need this line 
ico = member.avatar_url # since above line is useless you would change this line too
embed = discord.Embed(
color = discord.Color.red(),
)
embed.set_author(name=f'• Hello {member.name} on my server!!') # second problem was here.
embed.add_field(name='Warning,', value='read the regulations!', inline=False)
embed.set_footer(text="dBot created by Diablo#4700", icon_url=ico)
await channel.send(embed=embed)

我用注释标记了错误。

(重要)意图:
如果你不知道,你需要特权网关意图来跟踪成员事件。确保在应用程序的developer Portal of Discord中启用bot部分的两个意图,然后在顶部的代码中(您正在初始化bot的地方)…

import discord
from discord.ext import commands
client= commands.Bot(command_prefix="prefix", intents=discord.Intents.all()) 
...
# rest of the code

引用:

on_member_joinevent
contextorctx
ents Discord.Py

相关内容

  • 没有找到相关文章

最新更新