Amigun
@Amigun
Джун : |

Как запустить файл с телеграм-ботом из другого .py файла?

Добрый день! Если упростить условие максимально просто, то у меня есть много телеграм-ботов: main_bot и bot_1, bot_2, ..., bot_n. Я запускаю main_bot.py, и хочу через телеграм запускать, перезапускать, останавливать (это все отдельные команды) других своих ботов. Каким образом это можно реализовать?

Я уже пробовал использовать следующие команды в main_bot.py:
1. os.system('python bot_n.py') - мне не подошло, все работает без ошибок, но bot_n не отвечает на команды, main_bot все еще работает
2. os.startfile('bot_n.py') - не работает на линуксе
3. subprocess.Popen(['python', 'bot_n.py']) - как и в первом случае, бот не отвечает на команды. При том, если в файл bot_n.py первым делом поставить какой нибудь print то он, кончено, выведет в терминал текст, но на команды в телеграме отвечать не отвечает.

Так как у меня еще не вышло сделать запуск бота, то перезагрузку/остановку я еще не пробовал делать.

Что еще нужно попробовать, чтобы реализовать мою задачу? Заранее спасибо
  • Вопрос задан
  • 522 просмотра
Решения вопроса 1
Amigun
@Amigun Автор вопроса
Джун : |
Для тех, у кого возникнет такая же проблема, как и у меня. Вот как я ее решил:

У меня была гипотеза о том, что bot_n.py отрабатывает все принты и закрывается. Чтобы в этом удостовериться, я написал bash скрипт, который открывал бы мне bot_n.py, а этот bash скрипт я запускал из своего main_bot.py по команде. У меня открывался терминал и сразу же закрывался.

Оказывается, я забыл в bot_n.py дописать следующее:
if __name__ == '__main__':
    executor.start_polling(dp)


Теперь bot_n.py запускается, и бот работает. Но в это время не работает main_bot.py. Поэтому нужно добавить многопоточность. Вот и все.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы