Discord - 将消息从频道实时发送到我的网站

Cam*_*ray 5 python django discord discord.py

我目前有一个 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 
Run Code Online (Sandbox Code Playgroud)

我试图了解不和谐的网络套接字是如何工作的,但我的印象是它只是与机器人进行通信。

我的问题是,我应该通过什么方式将来自不和谐频道的消息实时发送到我的网站?我必须通过机器人吗?

注意:目标是让他的消息在我的平台上发出通知。

感谢您的回答!

mcd*_*291 2

回答你的问题:

我的问题是,我应该通过什么方式将来自不和谐频道的消息实时发送到我的网站?我必须通过机器人吗?

最好的方法是使用机器人。这是实现您想要的目标的最简单但最好的方法。您可以使用on_message事件在发送消息时获取消息。然后您可以使用该消息并更新您的网站。如何执行此操作的一个示例是:

@bot.event
async def on_message(message):
     message_content = message.content
     return
Run Code Online (Sandbox Code Playgroud)

您可以对 message_content 执行任何您想要的操作。出于您的目的,您可能希望将其存储在数据库中。

对于网站端,您可以使用 JavaScript 从数据库获取消息并相应地更新 HTML。