Discord.py 属性错误:'NoneType'对象没有属性'send'



我试图让我的bot在我的日志通道中发送消息,每当有人离开或加入服务器时,但我在控制台上得到错误AttributeError: 'NoneType' object has no attribute 'send'。我已经尝试了许多解决方案,我发现在StackOverflow和其他网站,但似乎没有工作在我的情况下。

下面是我的代码:
@bot.event
async def on_member_remove(member):
logChannel = bot.get_channel(id=myLogChannelIdHere)
embed = discord.Embed(
title= "**🚪 Un membre est parti**",
description = f"${member} a quitté le serveur",
color=0xda291c,
set_thumbnail = member.avatar_url,
)
embed.timestamp = datetime.datetime.utcnow()
await logChannel.send(embed=embed)

我不明白的是,我有完全相同的事情在其他事件,如我的on_ready事件(当我的机器人上线,它在我的日志通道发送消息),它的工作完美

@bot.event
async def on_ready():
logChannel = bot.get_channel(id=myLogChannelIdHere)
await bot.change_presence(status=discord.Status.online, activity=discord.Activity(type=discord.ActivityType.watching, name=""))
await logChannel.send("Le bot est en ligne")
print(bot.user.name + " est en ligne")

谢谢!

尝试先打印出get_channel返回的内容,因为如果get_channel找不到通道,它将返回None。

通过在bot.get_channel()

中硬编码一个int来尝试一下,看看它返回什么

同时检查Bot是否可以看到该通道并写入。

我试过在自己的机器人,它对我来说很不错。

代码复制文本通道ID

结果

看起来您的logChannel = bot.get_channel(id=myLogChannelIdHere)实际上没有捕获通道,这可能有几个原因。

存储在myLogChannelIdHere中的值要么不是bot可以看到的有效通道id,要么不是整数。如果它是一个字符串,将int()包裹起来将解决它。

另一点可能相关,也可能不相关,当我使用get_channel时,我不指定id=参数,我只是直接弹出通道id。

import discord
from discord import Member
from discord.utils import get
@client.event
async def on_member_join(member:Member):
if member.bot:
guild:discord.Guild = member.guild
role = guild.get_role(config.botRoleID)
channel:discord.TextChannel = guild.get_channel(YOUR_CHANNEL_ID)
await member.add_roles(role)
await channel.send(f'Set Bot role to "{member.display_name}" 😌')