Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Код пайтон улучшение кода

Desenter Game Ученик (153), на голосовании 1 неделю назад
Код python библиотека telebot
Помогите с решением проблема. есть код который открывает кнопки в чате и вот они должны открываться только для того кто эту команду и прописал а там получается что другим (всем) эти кнопки показываются и спользовать они могут

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())
Голосование за лучший ответ
Sergio 2.1 Оракул (67645) 1 месяц назад
 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}")
Desenter GameУченик (153) 1 месяц назад
другому пользователю все равно показываются, я уж сколько с нейронками мучлася - неполучается
Desenter GameУченик (153) 1 месяц назад
нужно чтобы кто прописал - тому и видны кнопки
Похожие вопросы