Найти - Пользователи
Полная версия: интеграция скрипта в бота aiogram
Начало » Python для новичков » интеграция скрипта в бота aiogram
1
Injector
Доброго всем дня!
Имеется рабочий скрипт test.py, итогом его работы будет список list1 (сейчас я просто максимально убрал всё лишнее, оставив лишь структуру скрипта). Решил написать телеграм-бота под него, где хотел бы распечатывать этот список, но не могу понять, как интегрировать скрипт в бота. Понимаю, что можно просто написать код скрипта в обработчике, но там такая простыня получится.
test.py
 import asyncio
import aiohttp
from aiohttp_proxy import ProxyConnector
urls = {'url1':'https://',
        'url2':'https://'}
url = urls[input("Введите url: ")]
x = float(input("Введите число: "))
list1 = []
async def func1(a):
    pass
async def func2(b):
    pass
    list1.append(c)
async def main():
    async with aiohttp.ClientSession() as session:
        await asyncio.gather(func1(url))
        await func2(x)
asyncio.get_event_loop().run_until_complete(main())

bot.py
 bot = Bot(token="токен", parse_mode="MarkdownV2")
dp = Dispatcher()
@dp.message(Command("start"))
async def cmd_start(message: types.Message):
    kb = [
        [
            types.KeyboardButton(text="Кнопка 1"),
            types.KeyboardButton(text="Кнопка 2"),
            types.KeyboardButton(text="Кнопка 3"),
        ],
    ]
    keyboard = types.ReplyKeyboardMarkup(keyboard=kb, resize_keyboard=True)
    await message.answer("Запустить скрипт № ", reply_markup=keyboard)
@dp.message(F.text.lower() == "кнопка 1")
async def fv(message: types.Message):
    await message.answer("Вместо сообщения хотелось бы запустить код из test.py")
async def main():
    await dp.start_polling(bot)
py.user.next
Тут вот запуск одного асинхронного скрипта из другого асинхронного скрипта.

Удивительно, что ты не знаешь про ворота. Это элементарнейшие знания по питону без всякой асинхронной работы. В книжках для самых маленьких описано. А про глобальные переменные вообще чуть ли не в младшей школе проходят материал.
Injector
py.user.next
Тут вот запуск одного асинхронного скрипта из другого асинхронного скрипта.Удивительно, что ты не знаешь про ворота. Это элементарнейшие знания по питону без всякой асинхронной работы. В книжках для самых маленьких описано. А про глобальные переменные вообще чуть ли не в младшей школе проходят материал.
Спасибо за помощь. Если я просто импортирую скрипт и добавлю в функцию fv строку test, то код будет выполняться сразу же после запуска бота, без ожидания нажатой кнопки. Можете подсказать, как именно нужно изменить функцию fv, что бы скрипт test запускался после нажатия Кнопки 1?
py.user.next
Injector
Если я просто импортирую скрипт и добавлю в функцию fv строку test, то код будет выполняться сразу же после запуска бота, без ожидания нажатой кнопки.
Я пример скинул, там если mod.py запускаешь, то он выводит слово Module. А если его импортируешь и запускаешь, то он не выводит слово Module, а просто работает. Почему так происходит? Потому что я использовал ворота в обоих скриптах. А ты использовал ворота в обоих скриптах? Как минимум, в своём вот этом test.py?

При импорте скрипт-то запускается, а ты этого не знаешь, потому что без книжек учишься.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB