import os
import json
import telebot
from telebot import types
API_TOKEN = 'YOUR_TELEGRAM_BOT_API_TOKEN'
bot = telebot.TeleBot(API_TOKEN)
button_file = 'user_buttons.json'
def load_data():
if os.path.exists(button_file):
with open(button_file, 'r', encoding='utf-8') as f:
return json.load(f)
return {}
def save_data(data):
with open(button_file, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
user_data = load_data()
@bot.message_handler(commands=['set'])
def set_buttons(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
params = message.text.split(maxsplit=1)
if len(params) < 2:
bot.reply_to(message, "Пожалуйста, добавьте текст после команды /set.")
return
buttons = params[1].split(',')
for button in buttons:
markup.add(button.strip())
user_id = str(message.from_user.id)
user_data[user_id] = {'buttons': [b.strip() for b in buttons]}
save_data(user_data)
bot.send_message(message.chat.id, 'Кнопки установлены!', reply_markup=markup)
@bot.message_handler(commands=['open'])
def open_buttons(message):
user_id = str(message.from_user.id)
if user_id in user_data and 'buttons' in user_data[user_id]:
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
for button in user_data[user_id]['buttons']:
markup.add(button)
bot.send_message(message.chat.id, 'Вот ваши кнопки:', reply_markup=markup)
else:
bot.send_message(message.chat.id, 'У вас нет установленных кнопок.')
@bot.message_handler(commands=['close'])
def close_buttons(message):
bot.send_message(message.chat.id, 'Кнопки закрыты.', reply_markup=types.ReplyKeyboardRemove())
@bot.message_handler(commands=['start'])
def start_message(message):
bot.send_message(message.chat.id, "Привет! Используй /set для установки кнопок.")
@bot.message_handler(func=lambda message: True)
def echo_all(message):
bot.reply_to(message, "Я не понимаю эту команду. Используй /set, /open или /close.")
if __name__ == '__main__':
try:
bot.infinity_polling()
except KeyboardInterrupt:
print("Бот остановлен вручную.")
except Exception as e:
print(f"Произошла ошибка: {e}")
Помогите с решением проблема. есть код который открывает кнопки в чате и вот они должны открываться только для того кто эту команду и прописал а там получается что другим (всем) эти кнопки показываются и спользовать они могут
button_file = 'user_buttons.json'
def load_data():
if os.path.exists(button_file):
with open(button_file, 'r', encoding='utf-8') as f:
return json.load(f)
return {}
def save_data(data):
with open(button_file, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
@bot.message_handler(commands=['set'])
def set_buttons(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
params = message.text.split(maxsplit=1)
if len(params) < 2:
bot.reply_to(message, "Пожалуйста, добавьте текст после команды /set.")
return
buttons = params[1].split(',')
for button in buttons:
markup.add(button.strip())
user_data[message.from_ user.id ] = {'buttons': [b.strip() for b in buttons]}
save_data(user_data)
bot.send_message(message.chat.id, 'Кнопки установлены!', reply_markup=markup)
@bot.message_handler(commands=['open'])
def open_buttons(message):
user_id = message.from_ user.id
if user_id in user_data and 'buttons' in user_data[user_id]:
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
for button in user_data[user_id]['buttons']:
markup.add(button)
bot.send_message(message.chat.id, 'Вот ваши кнопки:', reply_markup=markup)
else:
bot.send_message(message.chat.id, 'У вас нет установленных кнопок.')
@bot.message_handler(commands=['close'])
def close_buttons(message):
bot.send_message(message.chat.id, 'Кнопки закрыты.', reply_markup=types.ReplyKeyboardRemove())