尝试在设置的欢迎频道中发送欢迎信息

时间:2021-06-15 21:04:47

标签: python discord discord.py

我正在尝试让我的 python discord bot 在成员加入时在某个频道发送欢迎消息。我的机器人位于多个服务器中,因此通道存储在一个 json 文件中。在 on_member_join 函数中,我定义了 get_wchannelget_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

2 个答案:

答案 0 :(得分:1)

get_wchannel 是一个函数,你需要调用它

      try:
        if get_wchannel():
          await get_wchannel().send(embed=embed)

PS:您根本不需要这些参数,您没有使用它们。只需从函数定义中删除它们或在调用时传递它们

答案 1 :(得分:0)

你有不必要的争论。

no