我正在尝试让我的 python discord bot 在成员加入时在某个频道发送欢迎消息。我的机器人位于多个服务器中,因此通道存储在一个 json 文件中。在 on_member_join 函数中,我定义了 get_wchannel
和 get_message
这两个拉取特定频道和特定公会的消息。假设服务器希望它说 Welcome {member}! Glad your hear!
并且频道 ID 是 845331373392003122
机器人会将该消息发送到频道 ID。我遇到的一个问题是,每当我尝试发送消息(在嵌入中)时,我都会在控制台中收到以下错误..
await get_wchannel.send(embed=embed) AttributeError: 'function' object has no attribute 'send'
我的代码是...
@commands.Cog.listener()
async def on_member_join(self, member):
def get_message(bot, message):
with open('welcomemessage.json', 'r') as fp:
get_message = json.load(fp)
def get_wchannel(bot, message):
with open('welcomechannel.json', 'r') as fp:
get_wchannel = json.load(fp)
try:
return get_wchannel[str(message.guild.id)]
except KeyError:
return
embed=discord.Embed(title=f'{member} joined!', description=f'{get_message}', color=0x00FFFF)
embed.timestamp = datetime.datetime.utcnow()
pfp = member.avatar_url
embed.set_author(name=f"{member}", icon_url=pfp)
memberpfp = member.avatar_url
embed.set_thumbnail(url=memberpfp)
try:
if get_wchannel:
await get_wchannel.send(embed=embed)
except KeyError:
return
我该如何解决这个问题。谢谢! :D
答案 0 :(得分:1)
get_wchannel
是一个函数,你需要调用它
try:
if get_wchannel():
await get_wchannel().send(embed=embed)
PS:您根本不需要这些参数,您没有使用它们。只需从函数定义中删除它们或在调用时传递它们
答案 1 :(得分:0)
你有不必要的争论。
no