Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 2, 2023 16:09:30

Injector
Зарегистрирован: 2019-12-06
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

интеграция скрипта в бота aiogram

Доброго всем дня!
Имеется рабочий скрипт 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)

Офлайн

#2 Ноя. 3, 2023 06:32:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9849
Репутация: +  853  -
Профиль   Отправить e-mail  

интеграция скрипта в бота aiogram

Тут вот запуск одного асинхронного скрипта из другого асинхронного скрипта.

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



Прикреплённый файлы:
attachment async_test.tar.gz (655 байт)

Офлайн

#3 Ноя. 3, 2023 15:22:51

Injector
Зарегистрирован: 2019-12-06
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

интеграция скрипта в бота aiogram

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

Офлайн

#4 Ноя. 4, 2023 04:03:38

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9849
Репутация: +  853  -
Профиль   Отправить e-mail  

интеграция скрипта в бота aiogram

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

При импорте скрипт-то запускается, а ты этого не знаешь, потому что без книжек учишься.



Отредактировано py.user.next (Ноя. 4, 2023 04:05:26)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version