Discord - 仅从 python 应用程序向 Discord 频道发送消息(单向通信)

新手上路,请多包涵

我正在设计一个应用程序,当我的 python 代码发生问题时(例如,我的网站上有新用户注册),我可以向我的不和谐频道发送通知。这将是一种单向通信,因为只有 python 应用程序会将消息发送到不和谐频道。

这是我试过的。

 import os
import discord
import asyncio

TOKEN = ""
GUILD = ""

def sendMessage(message):
    client = discord.Client()

    @client.event
    async def on_ready():

        channel = client.get_channel(706554288985473048)
        await channel.send(message)
        print("done")

        return ""

    client.run(TOKEN)
    print("can you see me?")

if __name__ == '__main__':

    sendMessage("abc")
    sendMessage("def")

问题是只有第一条消息被发送(即 abc),然后 aysn 函数阻塞了第二个调用(def)。

我不需要监听不和谐事件,也不需要保持网络通信畅通。有什么方法可以让我只发布文本(像我们通常使用的 api 的发布方法)来扰乱服务器而不用监听事件?

谢谢。

原文由 john 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

您可以将消息发送到 Discord webhook。

首先,在您要向其发送消息的 Discord 频道中 创建一个 webhook

然后,使用 discord.Webhook.from_url 方法从 Discord 给你的 URL 中获取一个 Webhook 对象。

最后,使用 discord.Webhook.send 方法使用 webhook 发送消息。

如果您使用的是 discord.py 的版本 2,则可以使用以下代码片段:

 from discord import SyncWebhook

webhook = SyncWebhook.from_url("url-here")
webhook.send("Hello World")

否则,您可以使用 requests 模块:

 import requests
from discord import Webhook, RequestsWebhookAdapter

webhook = Webhook.from_url("url-here", adapter=RequestsWebhookAdapter())
webhook.send("Hello World")

原文由 Ben Soyka 发布,翻译遵循 CC BY-SA 4.0 许可协议

我找到了。 “Webhook”就是答案。不要使用 discord.py,只需为您的通道创建一个 webhook,然后将数据发布到该端点。

 import requests

#Webhook of my channel. Click on edit channel --> Webhooks --> Creates webhook
mUrl = "https://discord.com/api/webhooks/729017161942******/-CC0BNUXXyrSLF1UxjHMwuHA141wG-FjyOSDq2Lgt*******************"

data = {"content": 'abc'}
response = requests.post(mUrl, json=data)

print(response.status_code)

print(response.content)

原文由 john 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题