es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo usar funciones async/await en Flask con discord.py?

Estoy tratando de hacer una API temporal para una demostración con Flask. Una vez que se haya ejecutado la solicitud, se supone que debe enviar un mensaje en un canal específico de mi servidor de Discord. Sin embargo, cuando intento ejecutar esto en Flask, me da el error “RuntimeError: Install Flask with the ‘async’ extra in order to use async views.”

¿Cómo puedo hacer que esto funcione?

Aquí está mi código:

from flask import Flask, request
import discord
from discord_components import DiscordComponents, ComponentsBot, Button
import asyncio

bot = ComponentsBot(command_prefix="!")

app = Flask(__name__)

@bot.event
async def on_ready():
    print(f"Logged in as {bot.user}!")

@app.route('/product-bought')
async def query_example():
    product = request.args.get('product')
    print(product)
    channel = bot.get_channel(925144858325319690)
    channel.send(f'New product bought: {product}')
    return f'Your product is {product}'

if __name__ == '__main__':
    app.run(debug=True, port=5000)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para que esto funcione, necesitas instalar Flask con el extra ‘async’. Esto se puede hacer ejecutando el siguiente comando en tu símbolo del sistema o terminal:

    pip install flask[async]
    

    Después de instalar Flask con el extra ‘async’, puedes modificar tu código agregando ‘async’ antes de la definición de la función para la ruta query_example de la siguiente manera:

    @app.route('/product-bought')
    async def query_example():
    

    Luego, debes agregar la palabra clave ‘await’ antes del método channel.send() para asegurarte de que se ejecute de forma asíncrona:

    await channel.send(f'Producto comprado nuevo: {product}')
    

    Con estas modificaciones, tu aplicación Flask ahora debería poder enviar mensajes a tu canal Discord designado sin encontrar el error ‘async views’.

Comments are closed.