Твоя проблема в том, что ты в каждом файле определил объект bot, и в итоге каждый файл подписывается на своего бота... но работает только бот из main.py, так как он определяется ПОСЛЕДНИМ и переписывает имя bot на себя. Так что bot.infinity_polling() в итоге запускает только бота из main.py, а остальные боты остаются незапущенными.
Можно схитрить и заставить все файлы использовать один объект бота. Например, переписав вспомогательные файлы таким образом:
# commands.py
def register_commands(bot):
# функция register_commands должна присутствовать в каждом файле,
# и содержать вложенные объявления обработчиков событий.
# bot - объект бота, на котором регаются обработчики.
# таким же способом можно пробросить другие глобальные объекты программы.
# очень важно, чтобы функция вызывалась РОВНО один раз в программе!
# дальше пошли обработчики...
@bot.message_handler(commands=['version'])
def version_message(message):
bot.send_message(message.chat.id, 'Текущая версия бота 1.0')
bot.send_message(message.chat.id, 'Что умеет эта версия?\n1.Что-то точно умеет')
Тогда в main.py будет что-то вроде...
import commands
import weather
bot = telebot.TeleBot(.................)
# заставляем модули объявить и зарегистрировать свои обработчики
commands.register_commands(bot)
weather.register_commands(bot)
# дальше идут местные обработчики
@bot.message_handler(content_types=['text'])
def send_text(message):
if message.text.lower() in a:
bot.send_message(message.chat.id, 'Привет, создатель')
elif message.text.lower() =='ghbdtn':
bot.send_message(message.chat.id, 'Тебе тоже привет, раскладку переключи')
elif message.text.lower() in b:
bot.send_message(message.chat.id, 'Прощай, создатель ')
# ну и запускаем бота
bot.infinity_polling()