Top.Mail.Ru
Ответы
Аватар пользователя
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Помогите с TG ботом на PyTelegramBotAPI (telebot)

тут проблема заключаеться в том что при нажатии на кнопку "Промокод" не появляетьсяокно с ним, заранее спасибо



123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
 import telebot 
import sqlite3 as sql 
from telebot import types 
con = sql.connect("data.db", check_same_thread=False) 
cur = con.cursor() 
cur.execute("CREATE TABLE IF NOT EXISTS users(id INT)") 
 
bot = telebot.TeleBot('тут мой токен') 
chan_id = -1002007922846 
@bot.message_handler(commands=['start']) 
def start(message): 
    markupp = types.InlineKeyboardMarkup(row_width=2) 
    item1 = types.InlineKeyboardButton("Подписаться", url="https://t.me/+ld7jowsQLxwxYjA6", callback_data='subscribe') 
    item2 = types.InlineKeyboardButton("Проверить", callback_data='check') 
    markupp.add(item1, item2) 
    bot.send_message(message.chat.id, f"Добро пожаловать, {message.from_user.first_name}!" 
                                       "\nДля использования бота - подпишитесь на наш канал",                      parse_mode='html', reply_markup=markupp) 
@bot.callback_query_handler(func=lambda call: True) 
def c_listener(call): 
        if call.data == "check": 
                x = bot.get_chat_member(chan_id, call.from_user.id) 
                if x.status in ("member", "creator", "administrator"): 
                    markup = types.InlineKeyboardMarkup(row_width=2) 
                    item1 = types.InlineKeyboardButton("Регистрация", url="https://1wgtqa.life/casino/list?open=register#siml", callback_data='next') 
                    item2 = types.InlineKeyboardButton("Получить сигнал", callback_data="signal") 
                    item3 = types.InlineKeyboardButton("Промокод", callback_data='promo')  
                    markup.add(item1, item2, item3) 
                    bot.send_message(call.message.chat.id, """Добро пожаловать в EPLMINESBOT! 
Mines - это гэмблинг игра в букмекерской конторе 1win, которая основывается на классическом “Сапёре”.Ваша цель - открывать безопасные ячейки и не попадаться в ловушки. 
Шанс на победу ≈ 80%.""", parse_mode='html', reply_markup=markup) 
                 
                    cur.execute("INSERT INTO users VALUES(?)", (call.from_user.id, )) 
                    con.commit() 
                else: 
                    bot.send_message(call.message.chat.id, "Вы не подписались!") 
            #except Exception as e:            print(e) 
            #bot.send_message(call.message.chat.id, "Произошла ошибка. Попробуйте еще раз позже.") 
@bot.callback_query_handler(func=lambda call:True)          
def callback(call): 
    if call.message: 
        if call.data == "promo": 
            markup = types.InlineKeyboardMarkup(row_width=2)     
            item1 = types.InlineKeyboardButton("Регистрация", url="https://1wgtqa.life/casino/list?open=register#siml", callback_data='next') 
            item2 = types.InlineKeyboardButton("Получить сигнал", callback_data="signal") 
            item3 = types.InlineKeyboardButton("<<Назад", callback_data='check') 
            markup.add(item1, item2, item3) 
            mess = ' ПРОМОКОД - "EPLTAKE500"' 
            bot.send_message(call.message.chat.id, mess, reply_markup=markup) 
        else: 
            bot.send_message(call.message.chat.id, "ошибка") 
bot.polling(none_stop=True) 

заранее благодарю

ps:На счет предназначения кода не спрашивайте, меня попросили и предложили денег - я делаю(им было без разницы что я не умею делать ботов и на питоне максимум калькулятор делал) а что он будет делать не важно :)

По дате
По рейтингу
Аватар пользователя
Новичок
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
 import telebot  
import sqlite3 as sql  
from telebot import types  
 
con = sql.connect("data.db", check_same_thread=False)  
cur = con.cursor()  
cur.execute("CREATE TABLE IF NOT EXISTS users(id INT)")  
 
bot = telebot.TeleBot('тут мой токен')  
chan_id = -1002007922846  
 
@bot.message_handler(commands=['start'])  
def start(message):  
    markupp = types.InlineKeyboardMarkup(row_width=2)  
    item1 = types.InlineKeyboardButton("Подписаться", url="https://t.me/+ld7jowsQLxwxYjA6", callback_data='subscribe')  
    item2 = types.InlineKeyboardButton("Проверить", callback_data='check')  
    markupp.add(item1, item2)  
    bot.send_message(message.chat.id, f"Добро пожаловать, {message.from_user.first_name}!"  
                                       "\nДля использования бота - подпишитесь на наш канал", parse_mode='html', reply_markup=markupp)  
 
@bot.callback_query_handler(func=lambda call: True)  
def c_listener(call):  
    if call.data == "check":  
        x = bot.get_chat_member(chan_id, call.from_user.id)  
        if x.status in ("member", "creator", "administrator"):  
            markup = types.InlineKeyboardMarkup(row_width=2)  
            item1 = types.InlineKeyboardButton("Регистрация", url="https://1wgtqa.life/casino/list?open=register#siml", callback_data='next')  
            item2 = types.InlineKeyboardButton("Получить сигнал", callback_data="signal")  
            item3 = types.InlineKeyboardButton("Промокод", callback_data='promo')   
            markup.add(item1, item2, item3)  
            bot.send_message(call.message.chat.id, """Добро пожаловать в EPLMINESBOT!  
Mines - это гэмблинг игра в букмекерской конторе 1win, которая основывается на классическом “Сапёре”.Ваша цель - открывать безопасные ячейки и не попадаться в ловушки.  
Шанс на победу ≈ 80%.""", parse_mode='html', reply_markup=markup)  
              
            cur.execute("INSERT INTO users VALUES(?)", (call.from_user.id, ))  
            con.commit()  
        else:  
            bot.send_message(call.message.chat.id, "Вы не подписались!")  
    elif call.data == "promo":  
        markup = types.InlineKeyboardMarkup(row_width=2)      
        item1 = types.InlineKeyboardButton("Регистрация", url="https://1wgtqa.life/casino/list?open=register#siml", callback_data='next')  
        item2 = types.InlineKeyboardButton("Получить сигнал", callback_data="signal")  
        item3 = types.InlineKeyboardButton("<<Назад", callback_data='check')  
        markup.add(item1, item2, item3)  
        mess = ' ПРОМОКОД - "EPLTAKE500"'  
        bot.send_message(call.message.chat.id, mess, reply_markup=markup)  
    else:  
        bot.send_message(call.message.chat.id, "ошибка")  
 
bot.polling(none_stop=True) 
 
Аватар пользователя
Оракул

Обалдеть, сапёр в тг, такая ностальгия))

Аватар пользователя
Мудрец

Меня смущает вот это

1
 if call.message 

там разве что-то есть и call.message True?

Аватар пользователя

import telebot
import sqlite3 as sql
from telebot import types

con = sql.connect("data.db", check_same_thread=False)
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS users(id INT)")

bot = telebot.TeleBot('тут мой токен')
chan_id = -1002007922846

@bot.message_handler(commands=['start'])
def start(message):
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("Подписаться", url="https://t.me/+ld7jowsQLxwxYjA6", callback_data='subscribe')
item2 = types.InlineKeyboardButton("Проверить", callback_data='check')
markup.add(item1, item2)
bot.send_message(message.chat.id, f"Добро пожаловать, {message.from_user.first_name}!"
"\nДля использования бота - подпишитесь на наш канал", parse_mode='html', reply_markup=markup)

@bot.callback_query_handler(func=lambda call: True)
def callback_query_handler(call):
if call.data == "check":
x = bot.get_chat_member(chan_id, call.from_user.id)
if x.status in ("member", "creator", "administrator"):
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("Регистрация", url="https://1wgtqa.life/casino/list?open=register#siml", callback_data='next')
item2 = types.InlineKeyboardButton("Получить сигнал", callback_data="signal")
item3 = types.InlineKeyboardButton("Промокод", callback_data='promo')
markup.add(item1, item2, item3)
bot.send_message(call.message.chat.id, """Добро пожаловать в EPLMINESBOT!
Mines - это гэмблинг игра в букмекерской конторе 1win, которая основывается на классическом “Сапёре”.Ваша цель - открывать безопасные ячейки и не попадаться в ловушки.
Шанс на победу ≈ 80%.""", parse_mode='html', reply_markup=markup)

cur.execute("INSERT INTO users VALUES(?)", (call.from_user.id,))
con.commit()
else:
bot.send_message(call.message.chat.id, "Вы не подписались!")
elif call.data == "promo":
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("Регистрация", url="https://1wgtqa.life/casino/list?open=register#siml", callback_data='next')
item2 = types.InlineKeyboardButton("Получить сигнал", callback_data="signal")
item3 = types.InlineKeyboardButton("<<Назад", callback_data='check')
markup.add(item1, item2, item3)
mess = ' ПРОМОКОД - "EPLTAKE500"'
bot.send_message(call.message.chat.id, mess, reply_markup=markup)
else:
bot.send_message(call.message.chat.id, "Ошибка")

bot.polling(none_stop=True)