#!/usr/bin/env python3 # coding=utf-8 import logging import config import sqlite3 from telegram.ext import Updater, MessageHandler, Filters from telegram import InlineKeyboardButton, InlineKeyboardMarkup logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - \ %(message)s', level=logging.INFO) def get_callback_id(db): cursor = db.cursor() query = ('SELECT max(callback) FROM poll') cursor.execute(query) return int(cursor.fetchone()[0]) + 1 def add_vote(db, callback_id, user_id): cursor = db.cursor() query = ("INSERT INTO poll(callback, user_id) values(?,?)") cursor.execute(query, (callback_id, user_id)) db.commit() def post(bot, update, db): chat_id = update.message.chat_id if chat_id in config.allowed_users: callback_id = get_callback_id(db) add_vote(db, callback_id, 0) photo = update.message.photo[0] file_id = photo.file_id keyboard = InlineKeyboardMarkup([[InlineKeyboardButton(text="❤️", callback_data=callback_id)]]) bot.send_photo(chat_id=config.channel_id, photo=file_id, reply_markup=keyboard) else: bot.send_message(chat_id=chat_id, text="Not Authorized") updater = Updater(token=config.api_key) dispatcher = updater.dispatcher db = sqlite3.connect("chanbot.sqlite", check_same_thread=False) cursor = db.cursor() dispatcher.add_handler(MessageHandler(Filters.photo, lambda x, y: post(x, y, db))) updater.start_polling()