Найти - Пользователи
Полная версия: Интеграция программы в telegram бот
Начало » Python для экспертов » Интеграция программы в telegram бот
1
DokinsKING
У меня есть программа эмулятор игральных кубиков, он там делает броски с различными гранями и т. д, но это не важно. Я хочу её интегрировать в 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('Программа завершена')
AD0DE412
ВОТ ТАК ВОТ ФОРМАТИРОВАНИЕ
см. ниже
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB