Discord - 将消息从频道实时发送到我的网站
Posted
技术标签:
【中文标题】Discord - 将消息从频道实时发送到我的网站【英文标题】:Discord - Send messages from a channel to my website in real time 【发布时间】:2021-06-23 03:32:59 【问题描述】:我目前有一个 python/django 平台和一个不和谐社区。在我的不和谐服务器上有一个频道“公告”。我希望当在此频道中发布消息时,它会实时上传到我的网站。这是为了将其转换为通知。
目前我设法以一种简单的方式将消息从频道上传到我的网站,但不是实时的:
def discord_get_last_message_id():
message_id = 0
try:
message_id = Notification.objects.latest('id').discord_message_id
except:
pass
return message_id
def get_channel_messages():
#load last id discord message in DB
last_message_id = discord_get_last_message_id()
#Base route
route = "/channels/"+ DISCORD_CHANNEL_ANNONCES_ID +"/messages"
#if first time to DB, load just one item
if last_message_id == 0:
add = "?limit=1"
else:
add = "?after="+last_message_id
route = route + add
data,error_message = request_discord('GET',route)
print(data)
def request_discord(method,url_access,body=):
data =''
#Call token
error_message = ''
access_token = discord_get_token()
#Call request
headers = 'Authorization': access_token
body = body
if method=="GET":
result = requests.get(DISCORD_BASE_URI + url_access, headers=headers)
else:
result = requests.post(DISCORD_BASE_URI + url_access, headers=headers,data=body)
#Check result
if result.status_code != 200 and result.status_code != 201:
error_message = "Impossible de d'obtenir un resultat erreur: " + str(result.status_code)
else:
data = result.json()
return data,error_message
def discord_get_token():
return DISCORD_ANNONCES_CHANNEL_TOKEN
我试图了解 discord websockets 是如何工作的,但我的印象是它只能与机器人通信。
我的问题是,我应该通过哪种方式将消息从我的不和谐频道实时获取到我的网站?我必须通过机器人吗?
注意:目标是让他的消息在我的平台上发出通知。
感谢您的回答!
【问题讨论】:
不,您不必通过机器人,websockets 不仅是为机器人设计的。看看不和谐docs 感谢您的回答!总而言之,我在我的平台上安装了 websocket,并通过我的频道令牌直接链接到不和谐? 我并没有真正搞砸不和谐网关,但我认为它与此类似。我找到了一个有用的flowchart - 也许它会对你有所帮助。 感谢您的回答!我会研究这个 最后我使用了一个带有 discord.py 的机器人。确实,它要简单得多。非常感谢! 【参考方案1】:回答你的问题:
我的问题是,我应该通过哪种方式将消息从我的不和谐频道实时获取到我的网站?我必须通过机器人吗?
最好的方法是使用机器人。这是完成您想要的最简单但最好的方法。您可以使用on_message
事件在发送消息时获取消息。然后您可以使用该消息并更新您的网站。如何做到这一点的一个例子是:
@bot.event
async def on_message(message):
message_content = message.content
return
你可以用 message_content 做任何你想做的事。出于您的目的,您可能希望将其存储在数据库中。
对于网站方面,您可以使用 javascript 从数据库中获取消息并相应地更新 html。
【讨论】:
以上是关于Discord - 将消息从频道实时发送到我的网站的主要内容,如果未能解决你的问题,请参考以下文章