当前位置: 首页 > 知识库问答 >
问题:

如何让机器人在加入新服务器时向我的帮会中的特定频道发送带有帮会邀请链接的消息?

鲍鸿波
2023-03-14

所以基本上,我想要的是每当我的机器人加入任何公会时,它应该向我服务器中的一个特定频道发送一条消息,声明它被邀请到一个服务器,并带有它的名字,如果可能的话,还有该服务器的邀请链接。我尝试了一些东西,但从来没有真正奏效。

@client.event
async def on_guild_join(guild):
    channel = client.get_channel('736984092368830468')
    await channel.send(f"Bot was added to {guild.name}")

它不起作用,并抛出以下错误:

Ignoring exception in on_guild_join
Traceback (most recent call last):
  File "C:\Users\Rohit\AppData\Roaming\Python\Python37\site-packages\discord\client.py", line 312, in _run_event
    await coro(*args, **kwargs)
  File "c:\Users\Rohit\Desktop\discord bots\test bot\main.py", line 70, in on_guild_join
    await channel.send(f"Bot was added to {guild.name}")
AttributeError: 'NoneType' object has no attribute 'send'

我真的不知道如何让机器人发送带有公会名称的公会邀请链接。

共有2个答案

谢俊悟
2023-03-14

假设你的机器人拥有所需的权限,你将如何获得邀请、名称和公会图标。

@client.event
async def on_guild_join(guild):
    channel = client.get_channel(745056821777006762)
    invite = await guild.system_channel.create_invite()

    e = discord.Embed(title="I've joined a server.")
    e.add_field(name="Server Name", value=guild.name, inline=False)
    e.add_field(name="Invite Link", value=invite, inline=False)
    e.set_thumbnail(url=guild.icon_url)
    await channel.send(embed=e)
莫承运
2023-03-14

您获得“非类型”对象没有属性“发送”异常的原因是因为您的bot无法找到提供的频道。

这一行:

channel = client.get_channel('736984092368830468')

将不工作,这是因为通道ID必须是整数,你可以尝试这样:

channel = client.get_channel(int(736984092368830468))

如果此操作仍然不起作用,请确保bot可以访问该通道、该通道存在并且提供的ID正确。

 类似资料:
  • 我试图制作一个不和谐机器人,当被召唤时,它将加入作者所在的语音频道。 这是我所拥有的: 当我加入语音频道并键入命令时,我收到以下错误:

  • 每次机器人被邀请到服务器时,我都想发送一条消息。然后它应该写这样的话:“你好,这是我的不和机器人” 到目前为止,我有这个代码,它不会产生错误,但也不会发送消息。

  • 我正在尝试让我的discord机器人连接到一个语音频道,目前如下所示: 基本上,当他们发送消息时,我希望它加入消息作者的语音频道“-skip”,然后我的机器人加入,在聊天中说-p scotland forever,然后离开。我收到一条错误消息,说“频道”未定义或“连接”未定义,我尝试了几种不同的方法,我想我只是没有导入插件或其他东西,这可能是我的问题,但我知道应该使用什么插件。任何帮助都将不胜感激

  • 我有一个不和谐机器人,定期检查数据库中的一些数据,如果有更新,它会向通道输出一些内容。所以我设置了一个每小时运行一次的函数。 当机器人被添加到多个服务器时,问题就出现了,在这些服务器中,消息只被发送到特定的,因此消息只被发送到我的服务器通道。本质上,我只向我的渠道发送通知,我怎么能向每个拥有我的机器人的渠道发送通知,这可能吗?

  • 我目前正在制作一个discord bot,并希望在服务器加入时在服务器的通道中发送一条消息,这是我到目前为止的代码。 当我运行这段代码时,什么都不会发生。我没有得到任何ERORR或输出。 如果有人能帮忙,那就太棒了。谢谢

  • 我希望我的不和谐机器人在加入新服务器时发送一条特定的消息,例如:“你好”。机器人应该搜索要写入的顶部通道,然后在那里发送消息。我看到了这个,但这对我没有帮助