【发布时间】:2022-01-18 10:00:20
【问题描述】:
所以,我使用下面的代码向我的服务器发送欢迎和留言。
我将提供此错误的示例。
我有服务器 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:**')```
【问题讨论】:
-
欢迎来到堆栈!您在服务器 2 中发送到的通道是否具有特定名称?是否要存储特定设置频道的 id?
-
您好 Bagle,感谢您的欢迎!服务器 2 确实有一个特定的名称。但我正在寻找一个代码修复程序,允许欢迎和离开事件识别代码正在执行的通道,然后将输出发送到该服务器。例如,如果我将我的机器人邀请链接提供给某人,因为他们想用我的机器人来管理他们的服务器。每当有人加入或离开该其他人的服务器时,它都会将通知发送到我的不和谐服务器而不是他们自己的服务器。
-
感谢您的回复!请注意
on_member_join和on_member_remove不是特定于频道的,而是特定于服务器 的。不过我还有一个问题:当用户加入 Server 2 时,机器人应该在哪里发送欢迎消息? -
如果玩家要加入服务器二,机器人应该通过服务器二发送消息。但我不想总是更改代码中的通道 ID 以使其到达消息在正确服务器中发送的位置。因为如果其他人使用我的机器人,那么就不可能将机器人设置为所有不同的频道 ID
-
请看一下我提交的答案,我提供了两个可能的选项供您使用。
标签: python discord.py bots