Как импортировать .py в другой .py на TeleBot?

Рейтинг: 0Ответов: 1Опубликовано: 13.07.2023

У меня есть buttons.py:

from telebot import types
from main import bot

@bot.message_handler(commands=['start'])
def buttons_start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    but1 = types.KeyboardButton('Кнопка 1')
    markup.add(but1)

    bot.send_message(message.chat.id, 'ку', reply_markup=markup)

и main.py:

import telebot
from telebot import types
from config import TOKEN
import sqlite3 as sql #Позже будет нужен

bot = telebot.TeleBot(TOKEN)

@bot.message_handler(commands=['start'])
def start_command(message):
    channel_member = bot.get_chat_member(chat_id='-1001974463696', user_id=message.from_user.id)
    if channel_member.status == 'member' or channel_member.status == 'creator':
        bot.reply_to(message, 'Привет')
    else:
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(types.InlineKeyboardButton('Подписаться', url='ссылка'))
        bot.reply_to(message, 'Подпишись!\n\n'
                              'После подписки на все каналы, введи /start.',
                     reply_markup=keyboard)

bot.polling()

Как мне можно импортировать buttons.py, чтобы в main.py > bot.reply_to можно было написать ('Привет!', reply_markup = markup)? Ничего не получается, может есть какой-нибудь способ, как у cogs в disnake?

Ответы

▲ 0

Есть 2 способа решения данной проблемы:

  1. Вам нужно изучить структуру проекта, чтобы она была как по документации, чтобы вы могли использовать хэндлеры в других файлах.

  2. Нужно удалить хэндлеры из buttons.py и оставить только кнопки, тогда buttons.py будет выглядеть вот так:

     markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
     but1 = types.KeyboardButton('Кнопка 1')
     markup.add(but1)
    

main.py:

import buttons
@bot.message_handler(commands=['start'])
 def start_command(message):
   channel_member = bot.get_chat_member(chat_id='-1001974463696', 
   user_id=message.from_user.id)
    if channel_member.status == 'member' or channel_member.status == 'creator':
    bot.reply_to(message, 'Привет', reply_markup=buttons.markup)
    ... # Ваш код далее