Форум сайта python.su
Доброго всем дня!
Имеется рабочий скрипт 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 = 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)
Офлайн
Тут вот запуск одного асинхронного скрипта из другого асинхронного скрипта.
Удивительно, что ты не знаешь про ворота. Это элементарнейшие знания по питону без всякой асинхронной работы. В книжках для самых маленьких описано. А про глобальные переменные вообще чуть ли не в младшей школе проходят материал.
Прикреплённый файлы:
async_test.tar.gz (655 байт)
Офлайн
py.user.nextСпасибо за помощь. Если я просто импортирую скрипт и добавлю в функцию fv строку test, то код будет выполняться сразу же после запуска бота, без ожидания нажатой кнопки. Можете подсказать, как именно нужно изменить функцию fv, что бы скрипт test запускался после нажатия Кнопки 1?
Тут вот запуск одного асинхронного скрипта из другого асинхронного скрипта.Удивительно, что ты не знаешь про ворота. Это элементарнейшие знания по питону без всякой асинхронной работы. В книжках для самых маленьких описано. А про глобальные переменные вообще чуть ли не в младшей школе проходят материал.
Офлайн
InjectorЯ пример скинул, там если mod.py запускаешь, то он выводит слово Module. А если его импортируешь и запускаешь, то он не выводит слово Module, а просто работает. Почему так происходит? Потому что я использовал ворота в обоих скриптах. А ты использовал ворота в обоих скриптах? Как минимум, в своём вот этом test.py?
Если я просто импортирую скрипт и добавлю в функцию fv строку test, то код будет выполняться сразу же после запуска бота, без ожидания нажатой кнопки.
Отредактировано py.user.next (Ноя. 4, 2023 04:05:26)
Офлайн