欢迎消息未发送到正确的服务器。 Discord.py

Welcome Message not sending to correct server. Discord.py

所以,我正在使用下面的代码向我的服务器发送欢迎和留言。

我将提供此错误的示例。

我有服务器 1(我设置机器人的主服务器) 然后我有服务器 2.

当我将我的机器人添加到服务器 2 并邀请个人资料时。它向服务器 1 而不是服务器 2 发送了欢迎消息。

我需要如何处理我的代码才能使它在人们加入服务器 2 时向服务器 2 而不是服务器 1 发送欢迎消息?

我意识到我的欢迎和离开客户端事件 运行 脱离了服务器 1 的频道 ID,这就是为什么当有人加入服务器 2 时,它会向服务器 1 发送通知。如果我想让其他人服务器使用我的机器人,我怎样才能让它到达代码获取正在使用它的服务器的通道 ID 的位置,而不是将通知全部发送到一台服务器?

我希望这是有道理的,任何帮助将不胜感激!

@client.event                                                                                                                                       #
async def on_member_join(member):                                                                                                                   #
    guild = client.get_guild(919401083057618945)                                                                                                    #
    channel = guild.get_channel(919401083711934536)                                                                                                 #
    await channel.send(f'**Welcome to the server {member.mention} ! :partying_face:**')                                                             #
    await member.send(f'**Welcome to the {guild.name} server, {member.name}! :partying_face:**')                                                    #
                                                                                                                                                    #
# (Notifies a member left)                                                                                                                          #
@client.event                                                                                                                                       #
async def on_member_remove(member):                                                                                                                 #
    guild = client.get_guild(919401083057618945)                                                                                                    #
    channel = guild.get_channel(919401083711934536)                                                                                                 #
    await channel.send(f'**{member.mention} Has left the server! :cry:**')```

有多种方法可以实现这一点,因此我将提供两个您应该选择的可能选项。

选项 1 涉及 discord.utils 导入。此导入使您可以快速轻松地找到具有特定名称的频道,例如 'welcome' 或 'join-and-leave'。虽然这是一种快速简便的方法,但它不允许其他服务器的管理员或模组在不破坏此加入功能的情况下更改频道名称。请查看以下代码:

import discord.utils # I recommend placing this with your other imports
@client.event
async def on_member_join(member):
    channel = discord.utils.get(member.guild.channels, name='welcome')
    await channel.send(f"Welcome {member.mention}!")

选项 2 使用了 json,这在启动欢迎机器人或类似程序时非常有用。做这样的事情有多个问题。以下是一些可帮助您选择此选项的链接:

  • - 所以
  • - 所以