我有一个关于不和的问题。皮耶。我运行我的bot所在的两个独立服务器:测试服务器和主服务器。问题是,当我在测试服务器中发送消息时,bot会将其消息发送到主服务器,而不会将其发送回调用命令的服务器(仅在函数中)。
例如:
if message.content == '!Hello':
await message.channel.send('Hello there!')
如果我在测试服务器中键入上述内容,我的bot将以“你好!”在测试服务器中。但是,如果我尝试将此代码放入函数并调用它:
if message.content == "!Hello":
await hellomessage()
async def hellomessage():
channel = client.get_channel('Channel ID Here')
await channel.send('Hello there!')
通道ID显然设置为特定服务器。因此,假设我将ID“1234”作为我的主服务器,ID“1111”作为我的测试服务器,无论我在测试服务器还是主服务器中调用它,该消息都将发送到主服务器,因为ID没有什么不同。我的问题是如何确保“channel”属性根据调用它的服务器而改变。如果我说的话,我希望如此!您好,在我的测试服务器中,它不发送到主服务器,只发送到测试服务器。
似乎是一个非常琐碎的答案,但我只是在努力寻找它,任何帮助都很感激!
您可以使用检查发送的消息。帮会
消息的属性。
例子:
# You can also have a separate coroutine for your main server
async def hello_test_message():
test_guild_channel = client.get_channel(ID_HERE)
await test_guild_channel.send("Hello there!")
@client.event
async def on_message(message):
if client.user == message.author:
return
if message.guild.id == TEST_GUILD_ID_HERE:
if message.content.lower() == "!hello": # .lower() for case insensitivity
await hello_test_message()
# Another condition for your main server + calling the other coroutine
话虽如此,我假设你不是在每个可能的通道等的值中硬编码值,如果是这样的话,你只是想让机器人在原始消息的通道中响应,你可以使用message.channel.send(...
.
当前的处理方法将导致相当多的重复代码。
我还建议您研究一下discord的命令扩展,而不是对消息使用事件。
使用命令装饰器的机器人示例
Message.guild Guild.id
commands.command()
Message.channel
TextChannel.send()
Messageable.send()
-从abc继承的任何东西。Messagable
能够向其发送消息!所以这包括用户、文本通道、上下文等。 命令。Context
-在处理命令时,你会经常使用这个!
我目前正在制作一个discord bot,并希望在服务器加入时在服务器的通道中发送一条消息,这是我到目前为止的代码。 当我运行这段代码时,什么都不会发生。我没有得到任何ERORR或输出。 如果有人能帮忙,那就太棒了。谢谢
我正试图通过discord创建一个discord机器人。py并希望创建一个显示成员pfp的命令。但是,我希望bot能够识别何时正在ping,何时正在请求pfp。我如何重新格式化它,使我的机器人识别它是否在成员ping时被引用(假设机器人的名称和id为“bot#1111”) 我希望discord用户输入的reference命令 ,membget@Bot#1111
在我的不和谐中,我有几个角色,比如“所有者”、“成员”和“监狱”。我希望bot只能由“所有者”角色访问,并希望命令如下所示:。监狱@user。然后机器人应该去掉“成员”角色,给他们“监狱”角色。 不和谐服务器最新更新请在此输入图像描述
我试图制作一个不和谐机器人,当被召唤时,它将加入作者所在的语音频道。 这是我所拥有的: 当我加入语音频道并键入命令时,我收到以下错误:
每次机器人被邀请到服务器时,我都想发送一条消息。然后它应该写这样的话:“你好,这是我的不和机器人” 到目前为止,我有这个代码,它不会产生错误,但也不会发送消息。
因此,我希望我的bot在我的bot所在的每台服务器上都发送一条消息,但它将仅以一个通道名发送一条消息,如 示例: 机器人搜索频道名称将军 机器人会向该频道发送一条消息,它会继续向我的机器人所在的其他服务器发送“你好”。 谁能给我举个例子?因为我不知道如何。所以我在这里寻求帮助