【问题标题】:Welcome Message not sending to correct server. Discord.py欢迎消息未发送到正确的服务器。不和谐.py
【发布时间】: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_joinon_member_remove 不是特定于频道的,而是特定于服务器 的。不过我还有一个问题:当用户加入 Server 2 时,机器人应该在哪里发送欢迎消息?
  • 如果玩家要加入服务器二,机器人应该通过服务器二发送消息。但我不想总是更改代码中的通道 ID 以使其到达消息在正确服务器中发送的位置。因为如果其他人使用我的机器人,那么就不可能将机器人设置为所有不同的频道 ID
  • 请看一下我提交的答案,我提供了两个可能的选项供您使用。

标签: python discord.py bots


【解决方案1】:

有很多方法可以实现这一点,所以我将给你两个可能的选项,你应该选择这样做。

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

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,这在开始使用欢迎机器人或类似机器人时非常有用。做这样的事情有很多问题。以下是一些可以帮助您选择此选项的链接:

【讨论】:

  • 我为迟到的跟进表示歉意,但这完全符合我的预期。我很感激它!
猜你喜欢
  • 2021-10-05
  • 2021-04-27
  • 2021-02-12
  • 1970-01-01
  • 2021-06-24
  • 2020-11-07
  • 2021-10-07
  • 2021-08-17
  • 2021-06-01
相关资源
最近更新 更多