from random import choice
import telebot
from telebot import types
API_TOKEN = ""
bot = telebot.TeleBot(API_TOKEN)
guessing_game = {
0: {'question': 'Кто убил Кеннеди?', 'choices': ['Lee Harvey Oswald', 'Pamela Denise Anderson', 'Joseph Robinette Biden'] , 'answer': 'Lee Harvey Oswald'},
1: {'question': 'Кто президент России?', 'choices': ['Горбачёв', 'Путин', 'Медведев'] , 'answer': 'Путин'},
2: {'question': 'Что?Где?Когда?', 'choices': ['1', '2', '3'] , 'answer': '2'}
}
answer_guessing_game = {
0: 'Lee Harvey Oswald',
1: 'Путин',
2: '2',
}
@bot.message_handler(commands=["start"])
def start_message(message):
keyboardmain = types.InlineKeyboardMarkup()
ask_button = types.InlineKeyboardButton(text="Угадывать!", callback_data="play")
keyboardmain.add(ask_button)
try:
bot.send_message(message.chat.id, "Привет, я бот помощник по тестам!", reply_markup=keyboardmain)
except telebot.apihelper.ApiException:
print('Error')
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
if call.data == "play":
keyboard_main = types.InlineKeyboardMarkup()
question_id = choice(list(guessing_game.keys()))
question = guessing_game[question_id]['question']
choices = guessing_game[question_id]['choices']
choices_buttons = [types.InlineKeyboardButton(text=x, callback_data=f"{question_id}_answer_{x}") for x in choices]
keyboard_main.add(*choices_buttons)
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
text=question, reply_markup=keyboard_main)
if "answer" in call.data:
question_id, _, answer = call.data.split('_')
right_answer = answer_guessing_game.get(int(question_id))
keyboard = types.InlineKeyboardMarkup()
if right_answer == answer:
back_button = types.InlineKeyboardButton(text="back", callback_data="play")
keyboard.add(back_button)
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
text="Правильно!", reply_markup=keyboard)
else:
back_button = types.InlineKeyboardButton(text="back", callback_data="play")
keyboard.add(back_button)
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
text="Не правильно!", reply_markup=keyboard)
if __name__ == '__main__':
bot.infinity_polling()
{
"update_id": 933188596,
"message": {
"message_id": 1165934,
"from": {
"id": 534905,
"is_bot": false,
"first_name": "Aleksandr",
"last_name": "Shabelsky",
"username": "shabelsky",
"language_code": "ru"
},
"chat": {
"id": 534905,
"first_name": "Aleksandr",
"last_name": "Shabelsky",
"username": "shabelsky",
"type": "private"
},
"date": 1661801219,
"text": "тест сообщения"
}
}
{
"update_id": 933188598,
"message": {
"message_id": 1165936,
"from": {
"id": 534905,
"is_bot": false,
"first_name": "Aleksandr",
"last_name": "Shabelsky",
"username": "shabelsky",
"language_code": "ru"
},
"chat": {
"id": 534905,
"first_name": "Aleksandr",
"last_name": "Shabelsky",
"username": "shabelsky",
"type": "private"
},
"date": 1661801228,
"reply_to_message": {
"message_id": 1165934,
"from": {
"id": 534905,
"is_bot": false,
"first_name": "Aleksandr",
"last_name": "Shabelsky",
"username": "shabelsky",
"language_code": "ru"
},
"chat": {
"id": 534905,
"first_name": "Aleksandr",
"last_name": "Shabelsky",
"username": "shabelsky",
"type": "private"
},
"date": 1661801219,
"text": "тест сообщения"
},
"text": "тест ответа на сообщение"
}
}
from pprint import pprint
cards = {'card_' + str(x): {'name': x, 'desc': x, 'photo': x} for x in range(1,22)}
cards['card_21']['name'] = 'Мир'
cards['card_21']['desc'] = 'Завершенность бла бла бла'
cards['card_21']['photo'] = 'C:/Tools/tmp/card_21.png'
pprint(cards)
{'card_1': {'desc': 1, 'name': 1, 'photo': 1},
'card_10': {'desc': 10, 'name': 10, 'photo': 10},
'card_11': {'desc': 11, 'name': 11, 'photo': 11},
'card_12': {'desc': 12, 'name': 12, 'photo': 12},
'card_13': {'desc': 13, 'name': 13, 'photo': 13},
'card_14': {'desc': 14, 'name': 14, 'photo': 14},
'card_15': {'desc': 15, 'name': 15, 'photo': 15},
'card_16': {'desc': 16, 'name': 16, 'photo': 16},
'card_17': {'desc': 17, 'name': 17, 'photo': 17},
'card_18': {'desc': 18, 'name': 18, 'photo': 18},
'card_19': {'desc': 19, 'name': 19, 'photo': 19},
'card_2': {'desc': 2, 'name': 2, 'photo': 2},
'card_20': {'desc': 20, 'name': 20, 'photo': 20},
'card_21': {'desc': 'Завершенность бла бла бла',
'name': 'Мир',
'photo': 'C:/Tools/tmp/card_21.png'},
'card_3': {'desc': 3, 'name': 3, 'photo': 3},
'card_4': {'desc': 4, 'name': 4, 'photo': 4},
'card_5': {'desc': 5, 'name': 5, 'photo': 5},
'card_6': {'desc': 6, 'name': 6, 'photo': 6},
'card_7': {'desc': 7, 'name': 7, 'photo': 7},
'card_8': {'desc': 8, 'name': 8, 'photo': 8},
'card_9': {'desc': 9, 'name': 9, 'photo': 9}}
with open(cards['card_21']['photo'], "rb") as file:
data = file.read()
bot.send_photo(message.from_user.id, photo=data)
l = ['Яблоко', 'Груша']
keyboard = types.InlineKeyboardMarkup()
backbutton = types.InlineKeyboardButton(text="Back", callback_data="MainMenu")
button_list = [types.InlineKeyboardButton(text=x, callback_data=x) for x in l]
keyboard.add(*button_list, backbutton)
import telebot
from telebot import types
token = ""
bot = telebot.TeleBot(token)
contacs = {'sales': '8 (888) 888888, доб. 300',
'support': '8 (888) 888888, доб. 301',
'accounting': '8 (888) 888888, доб. 302',
'address': 'Наш адрес находится по адресу - адрес'}
@bot.message_handler(commands=['start'])
def handle_start(message):
keyboardmain = types.InlineKeyboardMarkup()
help = types.InlineKeyboardButton(text="Помощь", callback_data="help")
contacts = types.InlineKeyboardButton(text="Адрес офиса", callback_data="address")
site = types.InlineKeyboardButton(text="Перейти на сайт", callback_data="site", url='https://qna.habr.com/q/889613')
keyboardmain.add(help, contacts, site)
text = 'Добро пожаловать в Telegram бот компании "Лайт".'
bot.send_message(chat_id=message.chat.id, text=text, reply_markup=keyboardmain)
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
keyboardmain = types.InlineKeyboardMarkup()
help = types.InlineKeyboardButton(text="Помощь", callback_data="help")
contacts = types.InlineKeyboardButton(text="Адрес офиса", callback_data="address")
site = types.InlineKeyboardButton(text="Перейти на сайт", callback_data="site", url='https://qna.habr.com/q/889613')
buttons = [help, contacts, site]
text = contacs.get(call.data, None)
if call.data == 'help':
accounting = types.InlineKeyboardButton(text="Бухгалтерия", callback_data="accounting")
support = types.InlineKeyboardButton(text="Техподдержка", callback_data="support")
sales = types.InlineKeyboardButton(text="Отдел продаж", callback_data="sales")
back = types.InlineKeyboardButton(text="Назад", callback_data="back")
buttons = [accounting, support, sales, back]
text = 'Выберите пункт меню: '
if call.data == 'accounting':
back = types.InlineKeyboardButton(text="Назад", callback_data="back")
buttons.append(back)
if call.data == 'support':
back = types.InlineKeyboardButton(text="Назад", callback_data="back")
buttons.append(back)
if call.data == 'sales':
back = types.InlineKeyboardButton(text="Назад", callback_data="back")
buttons.append(back)
if call.data == 'address':
back = types.InlineKeyboardButton(text="Назад", callback_data="back")
buttons.append(back)
keyboardmain.add(*buttons)
bot.send_message(chat_id=call.message.chat.id, text=text, reply_markup=keyboardmain)
if __name__ == "__main__":
try:
bot.polling(none_stop=True)
except Exception as Error:
print(Error)
from threading import Thread
import schedule
def sheduler():
schedule.every().day.at("12:00").do(daily_notify)
while True:
schedule.run_pending()
sleep(1)
def daily_notify():
pass
#bot send text
Thread(target=sheduler, args=()).start()
bot.get_chat_members_count(group_chat_id)
bot.get_chat_administrators(group_chat_id)
bot.get_chat_member(group_chat_id, chat_id )
# -*- coding: utf-8 -*-
import telebot
from time import time
import os
bot = telebot.TeleBot(token_test)
@bot.message_handler(content_types=['voice'])
def voice_processing(message):
file_info = bot.get_file(message.voice.file_id)
downloaded_file = bot.download_file(file_info.file_path)
with open(f'{message.chat.id}_{int(time())}.ogg', 'wb') as new_file:
new_file.write(downloaded_file)
@bot.message_handler(commands=['start'])
def voice_send(message):
l_send = [filename for filename in os.listdir() if filename.startswith(f'{message.chat.id}')]
for f in l_send:
voice = open(f'{f}', 'rb')
bot.send_voice(chat_id=message.chat.id, voice=voice)
if __name__ == "__main__":
try:
bot.polling(none_stop=True)
except Exception as e:
print(e)
from time import sleep
def check_email():
while True:
mails = loop()
if mails:
for mail in mails:
bot.send_message(admin_id, mail)
sleep(60)
from threading import Thread
Thread(target=check_email, args=()).start()
def post_sql_query(sql_query):
with sqlite3.connect(database) as connection:
cursor = connection.cursor()
try:
cursor.execute(sql_query)
except Error:
print(Error)
result = cursor.fetchall()
return result
def delete_user(user_id):
del_user_query = f'DELETE FROM users WHERE user_id = {user_id};'
post_sql_query(del_user_query)
try:
bot.send_message(user_id, text)
except telebot.apihelper.ApiException:
delete_user(user_id)