当前位置: 首页 > 知识库问答 >
问题:

如何使机器人的事件只发生在D中的特定服务器iscord.py

彭雨华
2023-03-14

假设我想让我的机器人在服务器中发送某个消息时发送某个消息,例如:

something = ["test, something"]

@client.event
async def on_message(message): 
    if message.author == client.user: return
    channel = message.channel
    if any(word in message.content.lower() for word in something):
        await channel.send("yikers")
    else:
        return 

我如何使这种情况仅在指定的通道、指定的服务器中发生?

任何帮助都将不胜感激,谢谢!

共有1个答案

令狐珂
2023-03-14

您只需检查频道即可。id查看消息是否在正确的频道中:

@client.event
async def on_message(message): 
    if message.author == client.user: return
    channel = message.channel
    if channel.id == 123:
        if any(word in message.content.lower() for word in something):
            await channel.send("yikers")
        else:
            return 

您可以通过将桌面discord客户端置于开发人员模式,或者通过添加类似

print(f"{channel.name} {channel.id}")
 类似资料:
  • 问题内容: 我使用express.js设置了REST服务器。现在,我想向该服务器添加sse。实现此 sse程序包后,出现错误。我知道我收到此错误,何时尝试使用两次,但我没有。 我有可能无法在sse函数中使用express方法吗?例如: 此外,我找到了解决方案和这个。是否可以在不使用其他软件包的情况下通过该函数或其他方式使用sse ? 问题答案: 如果没有其他软件包,您绝对可以实现。 我写了一篇有关

  • 我有一个关于不和的问题。皮耶。我运行我的bot所在的两个独立服务器:测试服务器和主服务器。问题是,当我在测试服务器中发送消息时,bot会将其消息发送到主服务器,而不会将其发送回调用命令的服务器(仅在函数中)。 例如: 如果我在测试服务器中键入上述内容,我的bot将以“你好!”在测试服务器中。但是,如果我尝试将此代码放入函数并调用它: 通道ID显然设置为特定服务器。因此,假设我将ID“1234”作为

  • http://www.html5rocks.com/en/tutorials/eventsource/basics/ 但是,我不明白一个重要的概念--是什么触发了服务器上导致消息发送的事件? 换句话说--在HTML5示例中--服务器只发送一次时间戳: 如果我建立一个实际的例子--例如,一个Facebook风格的“墙”或一个股票报价器,在这个例子中,每当某个数据发生变化时,服务器就会向客户机“推送”

  • 如果我正确理解了服务器发送事件的原则,那么每次客户端注册到EventSource时,它实际上会打开一个到管理事件的资源的新HTTP连接。与其他HTTP请求相反,连接保持活动状态,因此专用于此客户端的服务器进程/线程将一直运行,直到客户端断开连接。 如果我们有1000个客户端使用SSE连接到一个应用程序,该怎么办?我们是否会有1000个进程/线程(做同样的事情)并发运行以处理SSE?我想我错了,但如

  • 我有一个后端服务器,它将事件作为服务器发送的事件发送给客户端。我还没有找到一个好的库来在Android上处理这项技术,所以我一直在使用一种回退方法,定期检查服务器(通过访问事件endpoint)中的新事件。 后台服务每10秒执行一次。不用说,这不是最好的方法。如果没有任何开源库可用于此场景,那么在内存使用和电池消耗方面,定期检查服务器后端是否有新事件的最佳方法是什么?与在Android中管理开放式

  • 我在tomcat 8.0上使用java尝试了一个SSE(服务器发送事件)。以下是我注意到的几件事。 我单击一个按钮,它会自动向servlet发出请求。执行Servlet的GET方法,返回事件流。一旦收到完整的数据流,页面会再次自动发出另一个请求,再次接收相同的数据!!!我没有无限循环!!! > 什么是正确的方法来确保事件流只发送一次到同一个连接/浏览器会话? 什么是正确的方法来确保事件流被关闭并且