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.

Ejecutar un bot/cliente de Discord desde otro archivo.

¿Cómo puedo tener el código del bot en un archivo pero ejecutar el bot real en otro archivo (sin extensiones de cogs)?
Necesito ejecutarlo en otro archivo debido a conflictos de bucle.

Intenté importar el cliente (variable del constructor del bot) y .start() en él, pero no funcionó, solo se inició el servidor web.

Código de ejemplo:

En el archivo del bot:

import discord
from discord.ext import commands
client = commands.Bot(command_prefix="!")

@client.event
async def on_ready():
    print("¡Estoy listo!")

En otro archivo (en mi caso, una aplicación web Sanic):

from bot_file import client
import discord
from sanic import Sanic

app = Sanic()

app.run()
client.run("token")
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para tener el código del bot en un archivo pero ejecutarlo en otro archivo, puedes importar la instancia del cliente del bot y llamar al método .run() en el nuevo archivo. Aquí tienes un ejemplo de fragmento de código:

    En el archivo bot.py:

    import discord
    from discord.ext import commands
    
    client = commands.Bot(command_prefix='!')
    
    # Aquí va el código del bot
    @client.event
    async def on_ready():
        print("¡Estoy listo!")
    
    # Puedes agregar más código del bot en este archivo
    

    En el nuevo archivo donde quieres ejecutar el bot:

    from bot import client
    
    # Importa la instancia del cliente del bot desde el archivo bot.py
    
    client.run('TOKEN_AQUÍ')
    
    # Ejecuta el bot usando el método .run() con tu token del bot
    

    De esta manera, el código del bot está contenido en el archivo bot.py y puedes ejecutar el bot desde un archivo separado para evitar conflictos de bucle. Importar la variable client desde el archivo bot.py te permite acceder al objeto Bot y sus métodos en el nuevo archivo.

Comments are closed.