python - 如何从 Flask Python 应用程序向 Discord 机器人发出带有 JSON 的 POST 请求
问题描述
我有一个小的不和谐机器人和一个小的烧瓶项目(bot.py 和 app.py)。
在我的烧瓶项目中,我有一个可以接收 JSON POST 请求的端点(我可以看到 JSON 很好)。现在的问题是我如何从 Flask 向我的 Bot.py 发送这个 JSON 有效负载,以便我的 bot.py 将它发布到我的 Discord 频道上。
我的代码:
- 烧瓶应用程序:
from flask import Flask, json, request,
app = Flask(__name__)
@app.route('/', methods=['GET'])
def index():
return 'working ...'
@app.route('/webhook', methods=['POST'])
def jiraJSON():
if request.is_json:
data = request.get_json()
print(data)
return 'json received', 200
else:
return 'Failed - Not a JSON', 400
if __name__ == '__main__':
app.run()
- 我的 bot.py 来自(https://realpython.com/how-to-make-a-discord-bot-python/)
# bot.py
import os
import discord
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
client = discord.Client()
@client.event
async def on_ready():
print(f'{client.user} has connected to Discord!')
client.run(TOKEN)
解决方案
所以我设法使用 Quart 和一个带有 Discord.py 的机器人让它工作。
这将在 webhook 上获取 JSON,并将该 JSON 发送到 Discord 机器人以发布在 Chanel ID 上。
import discord
import asyncio
from quart import Quart, request
app = Quart(__name__)
client = discord.Client()
# Setup for Discord bot
@app.before_serving
async def before_serving():
loop = asyncio.get_event_loop()
await client.login('<<<your_discord_bot_token_id>>>')
loop.create_task(client.connect())
#Setup for webhook to receive POST and send it to Discord bot
@app.route('/webhook', methods=['POST'])
async def myJSON():
channel = client.get_channel(<<<your_discord_chanel_ID>>>)
if request.is_json:
data = await request.get_json()
print(data)
await channel.send(data)
return 'json received', 200
else:
return 'Failed - Not a JSON', 400
if __name__ == '__main__':
app.run()
推荐阅读
- signal-processing - LabVIEW测得的模拟数字信号频率过高
- r - ggplot 和 geom_bar 的问题:希望两列堆叠而不加在一起
- r - 从r中的while循环中的向量列表中提取数据
- node.js - Node.js readline 只让我回答我的第一组问题,然后无限期地挂起。(附上可重现的样品!)
- python - 使用 Flask-WTForm 和 Postgresql 数据库的登录表单
- java - Mockito 测试 - 测试 write() 方法导致 NullPointerException
- windows - UTF-8 输出不再适用于 psql
- feathersjs - FeathersJS - 将 useUnifiedTopology 添加到 MongoDB
- ios - 如何通过 Firebase Auth 通过 Apple Sign In 获取有关用户真实性的数据?
- javascript - 将 Canvas 生成的 Img(图像)复制到 MS-Word