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 - 将消息从频道实时发送到我的网站的主要内容,如果未能解决你的问题,请参考以下文章

discord.js 将消息作为代码块发送?

有没有办法让我的机器人检查 DM 并将它们发布到我服务器的频道中?

Discord py 向频道发送消息

尝试向多个 Discord 频道发送消息

如何从特定频道狙击消息(discord.py)

如何在 C# 中使用 Discord Bot 发送消息?