@StrangeDylan

Как сделать возможность писать от лица бота через консоль?

Я хочу сделать так, что бы была возможность писать сообщения в консоль пайчарма и бот бы их отправлял в определенный канал, но при добавлении такой возможности бот перестает реагировать на все остальные команды.
Вот пример кода:

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix='>')
client = discord.Client()

@client.event
async def on_ready():
    print('Bot is ready')
    while True:
        message = input()
        channel = bot.get_channel(id=819176950950002710)
        await channel.send(message)

@bot.command()
async def ping(ctx):
    await ctx.send('pong')
 #На эту команду бот не реагирует
  • Вопрос задан
  • 183 просмотра
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
input - синхронная функция, она блокирует event loop. Для работы с консолью можно использовать асинхронную функцию ainput из модуля aioconsole.

import asyncio
from aioconsole import ainput

async def main():
  s = await ainput('Enter something: ')
  print (f"You entered {s}")

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы