所以基本上我想要的是,无论何时我的机器人加入任何行会,它都应该向服务器中的特定频道发送一条消息,表明它已被邀请使用其名称以及可能的服务器邀请链接到服务器。我尝试了一些方法,但它们从未真正起作用。
@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'
我真的不知道如何使机器人通过行会名称发送行会的邀请链接。
答案 0 :(得分:2)
出现'NoneType' object has no attribute 'send'
异常的原因是因为您的漫游器无法找到提供的频道。
此行:
channel = client.get_channel('736984092368830468')
将不起作用,这是因为通道ID必须为整数,您可以尝试以下操作:
channel = client.get_channel(int(736984092368830468))
如果仍然无法执行此操作,请确保漫游器可以访问该通道,该通道存在并且提供的ID正确。
答案 1 :(得分:0)
在这里,假设您的机器人具有所需的权限,您将如何获得邀请,姓名和行会图标。
@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)