joh*_*ohn 6 python bots python-asyncio discord discord.py
我正在设计一个应用程序,当我的 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")
Run Code Online (Sandbox Code Playgroud)
问题是仅发送第一条消息(即 abc),然后 aysn 函数阻止第二个调用(def)。
我不需要监听不和谐事件,也不需要保持网络通信畅通。有什么方法可以让我在不收听事件的情况下将文本(就像我们通常使用的 api 发布方法一样)发布到不和谐服务器?
谢谢。
Ben*_*yka 14
您可以使用 Discord 网络钩子。
首先,在您要向其发送消息的 Discord 频道中创建一个 webhook。这是 Discord 的帮助页面。
然后,使用该discord.Webhook.from_url方法Webhook从 Discord 给您的 URL 中获取一个对象。
最后,使用该discord.Webhook.send方法使用 webhook 发送消息。
这是使用requests模块的示例:
import requests
from discord import Webhook, RequestsWebhookAdapter
webhook = Webhook.from_url("url-here", adapter=RequestsWebhookAdapter())
webhook.send("Hello World")
Run Code Online (Sandbox Code Playgroud)
我已经找到了。“网络钩子”就是答案。无需使用 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11565 次 |
| 最近记录: |