Как упростить написание действия?
Я решил написать телеграмм бота, вот захотелось сделать обратную связь. Chat GРT выдает вот такой код, тут ещё игра крестики нолики в двух вариантах и отправка по ссылке и как раз отправка сообщений администратору. Как упростить отправку сообщения администратору и его ответ?
import telebot
from telebot import types
import random
bot = telebot.TeleBot('')
things = ['Камень', 'Ножницы', 'Бумага']
ADMIN_CHAT_ID = 799888927
user_messages = {}
@bot.message_handler(commands=['start'])
def handle_start(message):
keyword = types.ReplyKeyboardMarkup(row_width=3, resize_keyboard=True)
button1 = types.KeyboardButton('Камень')
button2 = types.KeyboardButton('Ножницы')
button3 = types.KeyboardButton('Бумага')
keyword.add(button1, button2, button3)
bot.send_message(message.chat.id, 'Выбери один из вариантов!', reply_markup=keyword)
@bot.message_handler(commands=['forward'])
def handle_forward_command(message):
bot.reply_to(message, 'Отправьте сообщение, которое хотите переслать')
bot.register_next_step_handler(message, save_user_message)
def save_user_message(message):
user_messages[message.chat.id] = message
forward = types.InlineKeyboardMarkup(row_width=1)
bt1 = types.InlineKeyboardButton('Для автора бота', callback_data=f'forward_{ADMIN_CHAT_ID}')
forward.add(bt1)
bot.send_message(message.chat.id, 'Выберите, кому отправить сообщение', reply_markup=forward)
@bot.callback_query_handler(func=lambda call: call.data.startswith('forward_'))
def send_author_message(call):
receiver_chat_id = int(call.data.split('_')[1])
user_message = user_messages.pop(call.message.chat.id, None)
if user_message:
bot.forward_message(receiver_chat_id, user_message.chat.id, user_message.message_id)
bot.send_message(user_message.chat.id, f'Ваше сообщение "{user_message.text}" было успешно отправлено!')
bot.send_message(receiver_chat_id, 'Для ответа напишите свое сообщение')
bot.register_next_step_handler(call.message, send_user_reply, receiver_chat_id, user_message.chat.id)
def send_user_reply(message, receiver_chat_id, user_chat_id):
bot.send_message(user_chat_id, f'Администратор ответил на ваше сообщение:\n{message.text}')
@bot.message_handler(commands=['newgame'])
def start(message):
answer = types.InlineKeyboardMarkup(row_width=3)
bt1 = types.InlineKeyboardButton("Камень", callback_data='Камень')
bt2 = types.InlineKeyboardButton("Ножницы", callback_data='Ножницы')
bt3 = types.InlineKeyboardButton("Бумага", callback_data='Бумага')
answer.add(bt1, bt2, bt3)
bot.send_message(message.chat.id, 'Выбери что-то!', reply_markup=answer)
@bot.message_handler(commands=['url'])
def url_inline(message):
url = types.InlineKeyboardMarkup(row_width=1)
bt1 = types.InlineKeyboardButton('Ссылка',
url='https://forum.mordor-rp.com/index.php?members/kirill-veselov.70053/')
url.add(bt1)
bot.send_message(message.chat.id, 'Нажми на кнопку для перехода на сайт', reply_markup=url)
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
thing = random.choice(things)
if call.data == 'Ножницы':
if thing == 'Ножницы':
bot.send_message(call.message.chat.id, f'Ничья. Бот выбрал {thing}. Выбери снова!')
elif thing == 'Камень':
bot.send_message(call.message.chat.id, f'Ты проиграл! Бот выбрал {thing}. Выбери снова!')
elif thing == 'Бумага':
bot.send_message(call.message.chat.id, f'Ты выиграл! Бот выбрал {thing}. Выбери снова!')
elif call.data == 'Бумага':
if thing == 'Бумага':
bot.send_message(call.message.chat.id, f'Ничья. Бот выбрал {thing}. Выбери снова!')
elif thing == 'Камень':
bot.send_message(call.message.chat.id, f'Ты проиграл! Бот выбрал {thing}. Выбери снова!')
elif thing == 'Ножницы':
bot.send_message(call.message.chat.id, f'Ты выиграл! Бот выбрал {thing}. Выбери снова!')
elif call.data == 'Камень':
if thing == 'Камень':
bot.send_message(call.message.chat.id, f'Ничья. Бот выбрал {thing}. Выбери снова!')
elif thing == 'Ножницы':
bot.send_message(call.message.chat.id, f'Ты проиграл! Бот выбрал {thing}. Выбери снова!')
elif thing == 'Бумага':
bot.send_message(call.message.chat.id, f'Ты выиграл! Бот выбрал {thing}. Выбери снова!')
@bot.message_handler(content_types=['text'])
def handle_message(message):
thing = random.choice(things)
if message.text == 'Камень':
if thing == message.text:
bot.reply_to(message, 'Ничья. Выбери снова предмет!')
elif thing == 'Бумага':
bot.reply_to(message, 'Я выйграл. Выбери снова предмет!')
elif thing == 'Ножницы':
bot.reply_to(message, 'Ты выйграл. Выбери снова предмет!')
elif message.text == 'Ножницы':
if thing == message.text:
bot.reply_to(message, 'Ничья. Выбери снова предмет!')
elif thing == 'Бумага':
bot.reply_to(message, 'Я выйграл. Выбери снова предмет!')
elif thing == 'Камень':
bot.reply_to(message, 'Ты выйграл. Выбери снова предмет!')
elif message.text == 'Бумага':
if thing == message.text:
bot.reply_to(message, 'Ничья. Выбери снова предмет!')
elif thing == 'Ножницы':
bot.reply_to(message, 'Я выйграл. Выбери снова предмет!')
elif thing == 'Камень':
bot.reply_to(message, 'Ты выйграл. Выбери снова предмет!')
else:
bot.reply_to(message, 'Че ты написал? Я не ебу')
bot.polling(non_stop=True)