每当有人离开或加入服务器时,我都试图让我的机器人在我的日志通道中发送一条消息,但是我在我的控制台中得到了错误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在线时,它在我的日志通道中发送一条消息),它工作得很好。
@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")谢谢!
发布于 2022-07-06 20:59:45
发布于 2022-07-07 08:15:22
似乎你的logChannel = bot.get_channel(id=myLogChannelIdHere)并没有真正捕捉到频道,这可能有几个原因。
存储在myLogChannelIdHere中的值要么不是bot可以看到的有效通道id,要么不是整数。如果它是一个字符串,将int()封装在它周围将解决这个问题。
另一点可能相关,也可能不相关,当我使用get_channel时,我不指定id=参数,我只是直接弹出通道id。
发布于 2022-07-07 21:05:53
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}" ')https://stackoverflow.com/questions/72889348
复制相似问题