Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 1, 2021 12:45:57

DokinsKING
Зарегистрирован: 2021-04-01
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Интеграция программы в telegram бот

У меня есть программа эмулятор игральных кубиков, он там делает броски с различными гранями и т. д, но это не важно. Я хочу её интегрировать в Telegram бота. Я уже начал это делать, но столкнулся с проблемой. Я не могу в @bot.message_handler(content_types сделать вычисления, а потом в @bot.callback_query_handler(func=lambda call: True) эти вычисления отправлять.

Я скину код, кто может наведите на верный путь


BOT телеграм:

 import config
import telebot
from telebot import types
bot = telebot.TeleBot(config.token)
@bot.message_handler(commands=['start'])
def welcome(message):
    #keyboard
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton('База данных')
    item2 = types.KeyboardButton('Генератор паролей')
    item3 = types.KeyboardButton('Эмулятор игральных кубиков')
    markup.add(item1,item2,item3)
    bot.send_message(message.chat.id,'Добро пожаловать, {0.first_name}!\nЯ - <b>{1.first_name}</b>'.format(message.from_user,bot.get_me()),
                     parse_mode='html', reply_markup=markup)
@bot.message_handler(content_types=['text'])
def replayter(message):
    global hap
    if message.chat.type == 'private':
        if message.text == 'База данных':
            markup = types.InlineKeyboardMarkup(row_width=2)
            item1 = types.InlineKeyboardButton('Общий балл', callback_data='1')
            item2 = types.InlineKeyboardButton('Добавить учеников', callback_data='2')
            item3 = types.InlineKeyboardButton('Удалить ученика', callback_data='3')
            item4 = types.InlineKeyboardButton('Изменить данные ученика', callback_data='4')
            item5 = types.InlineKeyboardButton('Распечатать базу данных', callback_data='5')
            item6 = types.InlineKeyboardButton('Поиск по возрасту', callback_data='6')
            item7 = types.InlineKeyboardButton('Поиск по баллу', callback_data='7')
            markup.add(item1, item2, item3, item4, item5,item6,item7)
            bot.send_message(message.chat.id, 'Какую операцию Вы хотите выполнить?', reply_markup=markup)
        elif message.text == "Генератор поролей":
            markup = types.InlineKeyboardMarkup(row_width=2)
            item1 = types.InlineKeyboardButton('Сгенерировать', callback_data='8')
            markup.add(item1)
            bot.send_message(message.chat.id, 'Какую операцию Вы хотите выполнить?', reply_markup=markup)
        elif message.text == "Эмулятор игральных кубиков":
            global hap
            global results
            n = bot.send_message(message, 'Введите количество граней куба: '.format(message.from_user, bot.get_me()))
            z = bot.send_message(message.chat.id, 'Введите количество кубов: '.format(message.from_user, bot.get_me()))
            g = bot.send_message(message.chat.id,'Введите количество бросков: '.format(message.from_user, bot.get_me()))
            sp = [n,z,g]
            hap = []
            for i in range(sp[2]):
                hap.append([])
                for j in range(sp[1]):
                    d = randrange(1, sp[0] + 1)
                    hap[i].append(d)
            results = []
            for i in hap:
                results.append(sum(i))
            markup = types.InlineKeyboardMarkup(row_width=2)
            item1 = types.InlineKeyboardButton('Вывести результаты всех кубиков', callback_data='9')
            item2 = types.InlineKeyboardButton('Вывести результаты всех бросков', callback_data='10')
            item3 = types.InlineKeyboardButton('Вывести максимальную сумму', callback_data='11')
            item4 = types.InlineKeyboardButton('Вывести минимальную сумму', callback_data='12')
            item5 = types.InlineKeyboardButton('Увеличить результат броска', callback_data='13')
            markup.add(item1,item2,item3,item4,item5)
            bot.send_message(message.chat.id, 'Какую операцию Вы хотите выполнить?', reply_markup=markup)
        else:
            bot.send_message(message.chat.id, 'Я таких слов не знаю(')
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    try:
        if call.message:
            if call.data == '1':
                pass
            elif call.data == '2':
                pass
            elif call.data == '3':
                pass
            elif call.data == '4':
                pass
            elif call.data == '5':
                pass
            elif call.data == '6':
                pass
            elif call.data == '7':
                pass
            elif call.data == '8':
                pass
            elif call.data == '9':
                bot.send_message(call.message.chat.id,str(*hap))
            elif call.data == '10':
                pass
            elif call.data == '11':
                pass
            elif call.data == '12':
                pass
            elif call.data == '13':
                pass
            bot.edit_message_text(chat_id= call.message.chat.id, message_id=call.message.message_id, text='База данных',reply_markup=None)
            bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Генератор поролей',
                                  reply_markup=None)
            bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Эмулятор игральных кубиков',
                                  reply_markup=None)
            bot.answer_callback_query(chat_id=call.message.chat.id, show_alert=True,text = 'Тест')
    except Exception as r:
        print(repr(r))
bot.polling(none_stop=True)




Программа,которую я хочу интегрировать:

 from random import randrange
# -*- coding: utf-8 -*-
def wyw():  #ввод данных
    n = int(input('Введите количество граней куба: '))
    z = int(input('Введите количество кубов: '))
    g = int(input('Введите количество бросков: '))
    return [n, z, g]
def f_results():   # результаты бросков
    global results
    results = []
    for i in hap:
        results.append(sum(i))
    return results
def act():    #генератор случайных бросков
    global hap
    sp = wyw()
    hap = []
    for i in range(sp[2]):
        hap.append([])
        for j in range(sp[1]):
            d = randrange(1, sp[0] + 1)
            hap[i].append(d)
    return hap
act()
f_results()
menu_commands ='Какую операцию Вы хотите выполнить?\n1) Вывести результаты всех кубиков\n2) Вывести результаты всех бросков\n3) Вывести максимальную сумму\n4) Вывести минимальную сумму\n5) Увеличить результат броска\n6) Уменьшить результат броска\n7) Вывести файл со значениями бросков\n8) Выйти из программы\nВведите номер операции: '
menu = int(input(menu_commands))
while 0<menu<8:
    if menu == 1:
        print(*hap)
        menu = int(input(menu_commands))
    if menu == 2:
        print(*results)
        menu = int(input(menu_commands))
    if menu == 3:
        def mx():  # максимальный результат
            return max(results)
        print(mx())
        menu = int(input(menu_commands))
    if menu == 4:
        def mn():  # минимальный результат
            return min(results)
        print(mn())
        menu = int(input(menu_commands))
    if menu == 5:
        def pribavit_k_brosku():
            pribav = int(input('Введите число, которое хотите прибавить: '))
            ind = int(input('К какому броску вы хотите прибавить? (введите числом): ')) - 1
            global results
            results[ind] = results[ind] + pribav
            return results
        print(*pribavit_k_brosku())
        menu = int(input(menu_commands))
    if menu == 6:
        def otnyat_ot_broska():
            vichet = int(input('Введите число, которое хотите отнять: '))
            ind = len(hap) + 1
            while ind >= len(hap):
                ind = int(input('Из какого броска вы хотите отнять? (введите числом): ')) - 1
            results[ind] = results[ind] - vichet
            return results
        print(*otnyat_ot_broska())
        menu = int(input(menu_commands))
    if menu == 7:
        def log():
            f = open('cubelog.txt', 'a+', encoding='utf-8')
            f.write(f'{str(hap)}\n\n')
            f.close()
        log()
        menu = int(input(menu_commands))
print('Программа завершена')

Отредактировано DokinsKING (Апрель 2, 2021 13:34:35)

Офлайн

#2 Апрель 2, 2021 11:19:25

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 889
Репутация: +  40  -
Профиль   Отправить e-mail  

Интеграция программы в telegram бот

ВОТ ТАК ВОТ ФОРМАТИРОВАНИЕ
см. ниже



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Апрель 2, 2021 11:19:52)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version