def answer(call):
chat_id = call.message.chat.id
msg_id = call.message.message_id
bot.delete_message(chat_id, msg_id)
if call.data == 'help':
conn = sqlite3.connect('database.db')
cur = conn.cursor()
cur.execute("INSERT INTO basket (name, date, product, much) VALUES (?, ?, ?, ?)", (user_id, 'none', 'Blue Razz Ice', '1'))
conn.commit()
conn.close()
import telebot
from telebot import types
import sqlite3
bot = telebot.TeleBot(TOKEN)
link = 'https://t.me/(name_bot)'
@bot.message_handler(commands=['start'])
def start(message):
msg = str(message.text).rsplit(' ', 1)
ref = types.ReplyKeyboardMarkup(resize_keyboard=True)
ref_btn = types.KeyboardButton('Ваша реф ссылка')
ref_btn2 = types.KeyboardButton('Мои рефералы')
ref.add(ref_btn, ref_btn2)
conn = sqlite3.connect('db.db')
cur = conn.cursor()
user = cur.execute("SELECT id FROM users WHERE chat_id == ?", (message.chat.id,)).fetchone()
if user:
#Юзер уже сть в базе
bot.send_message(message.chat.id, 'Доброго времени суток', reply_markup=ref)
else: # Юзера пришел в первые
if len(msg) == 2: #Проверяем есть ли реф сылка
id_referer = msg[1]
bot.send_message(message.chat.id, f'Вас пригласили в чат.\nID реферера: {msg[1]}', reply_markup=ref)
cur.execute("INSERT INTO users(f_name, l_name, chat_id, referer) VALUES (?, ?, ?, ?)", (message.from_user.first_name, message.from_user.last_name, message.chat.id, id_referer))
conn.commit()
conn.close()
else: # Сюда попадаем если реф ссылки нет
cur.execute("INSERT INTO users(f_name, l_name, chat_id) VALUES (?, ?, ?)",
(message.from_user.first_name, message.from_user.last_name, message.chat.id))
conn.commit()
conn.close()
bot.send_message(message.chat.id, 'Вы сами нашли наш чат', reply_markup=ref)
@bot.message_handler(content_types=['text'])
def ref(message):
if message.text == 'Ваша реф ссылка':
bot.send_message(message.chat.id, 'Ваша реф ссылка:')
bot.send_message(message.chat.id, f'{link}?start={message.chat.id}')
elif message.text == 'Мои рефералы':
conn = sqlite3.connect('db.db')
cur = conn.cursor()
referal = cur.execute("SELECT * FROM users WHERE referer = ?", (message.chat.id,)).fetchall()
bot.send_message(message.chat.id, f'Количество рефералов:\n {len(referal)}')
bot.infinity_polling()
def wiki_app(message):
#Старайся не использовать глобальные переменные
global wiki_found, count
wiki_found.clear()
answer = 'Приветствую вас в мини-приложении "Википедия"!\n' \
'В этом приложении вы можете найти что-либо вам нужное на самом большом поисковом сервисе мира!\n' \
'Для этого нажмите кнопку старт!'
markup = telebot.types.InlineKeyboardMarkup(row_width=2)
wiki_yes = telebot.types.InlineKeyboardButton(text='Да ✔', callback_data='wiki_yes')
wiki_no = telebot.types.InlineKeyboardButton(text='Нет ✖', callback_data='wiki_no')
markup.add(wiki_no, wiki_yes)
#Что конкретно происходит в этой строке??
#message.text = message.text.strip
bot.send_message(chat_id=message.chat.id, text=answer, reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def wiki_app_start(call):
chat_id = call.message.chat.id
data = call.data
if data == 'wiki_yes':
bot.send_message(chat_id, text='Мини приложение запускается...')
time.sleep(1.6)
mes = bot.send_message(chat_id, text='Напишите сюда,то что нужно найти в Википедии!')
#Передаем сообщение юзера в другую функцию
bot.register_next_step_handler(mes, search)
elif data == 'wiki_no':
bot.send_message(chat_id, text='Отмена поиска.')
#game_menu(message) #Неизвестно где эта функция и что она делает
def search(message):
wiki_found = message.text
wikipedia.set_lang('ru')
already_fonding = wikipedia.search(wiki_found)
bot.send_message(chat_id=message.chat.id, text=already_fonding)
markup_pictures_choice=types.ReplyKeyboardMarkup(resize_keyboard=True)
button1 = types.KeyboardButton("Милое")
button2 = types.KeyboardButton("Память")
button3 = types.KeyboardButton("Назад")
markup_pictures_choice.add(button1,button2, button3)
geo = {'format': 'json', 'lat': f'{message.location.latitude}', 'lon': f'{message.location.longitude}'}
r = requests.get('https://nominatim.openstreetmap.org/reverse', params=geo)
if message.text == 'Викторина':
# Создаем рандомное число и берем вопрос с таким id
conn = sqlite3.connect('rustest.db')
cursor = conn.cursor()
cursor.execute(f"SELECT id FROM quiz")
result1 = cursor.fetchall()
question_id = (random.choice(result1)[0])
cursor.execute(f"SELECT * FROM quiz WHERE id == {question_id}")
result = cursor.fetchone()
question = result[1]
answer = result[2].rsplit(',', 15)
co_id = result[3]
# Собираем вопрос из базы и ставим ему ограничение 5 мин (300 сек)
poll = bot.send_poll(report, f'{question}', answer, is_anonymous=False, type='quiz', correct_option_id=co_id,
open_period=300)
# Присваиваем вопросу poll_id и сохраняем в базу
cursor.execute(f"UPDATE quiz SET poll_id == ? WHERE id == ?", (f'{poll.poll.id}', f'{question_id}'))
conn.commit()
# Тут отлавливаем ответ на викторину и сохраняем юзеров в базу
@bot.poll_answer_handler()
def pola(polle):
conn = sqlite3.connect('rustest.db')
cursor = conn.cursor()
cursor.execute("INSERT INTO users (chat_id, f_name, score) VALUES (?, ?, ?)",
(f'{polle.user.id}', f'{polle.user.first_name}', 0))
conn.commit()
cursor.execute("SELECT * FROM quiz WHERE poll_id == ?", (f'{polle.poll_id}',))
otvet = cursor.fetchone()
# Если юзер ответил верно плюсуем ему 1 балл, если нет, просто ничего не делаем
if otvet[3] == polle.option_ids[0]:
cursor.execute("SELECT score FROM users WHERE chat_id == ?", (f'{polle.user.id}',))
res = cursor.fetchone()
score = res[0] + 1
cursor.execute("UPDATE users SET score == ? WHERE chat_id == ?", (f'{score}', f'{polle.user.id}'))
conn.commit()
conn.close()
else:
pass