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

Posted

技术标签:

【中文标题】discord.py - 加入/离开消息错误,不起作用【英文标题】:discord.py - Join/Leave messages error, doesn't work 【发布时间】:2021-05-16 08:09:58 【问题描述】:

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

这是我的代码:

@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)

【问题讨论】:

这能回答你的问题吗? Discord.py on_member_join and on_member_leave not working 我更正了,但机器人仍然没有向给定频道发送消息,不存在错误。 @DiabloStudio 您的机器人是否有权在该特定频道()中发送消息? 有权限,还是看不到消息。 您确定没有收到任何错误吗?在该 sn-p 的第 7 行末尾有一个逗号,后面没有参数,这应该会引发语法错误。另外,您是否将意图传递给您的 Bot/Client 构造函数? 【参考方案1】:

代码 sn-p 中存在不止一个问题。我将在此处列出它们并进行修复。

首先是主要问题,你用 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)

我已经用 cmets 标记了错误。 (重要)意图: 以防万一您不知道,您需要特权网关意图才能跟踪成员事件。确保从 Discord 的 Developers Portal 的应用程序中的 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_join eventcontext or ctxIntents Discord.Py

【讨论】:

以上是关于discord.py - 加入/离开消息错误,不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 discord.py 机器人加入语音通道之间添加暂停?

discord.py(python)中的ffmpeg播放器自动离开

discord.py 加入消息嵌入未发送

discord.py - 在 bot 离开服务器后从 json 中删除公会

检查用户是不是在语音频道 discord.py

如何删除discord.py中的消息[重复]