58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
|
|
||
|
from telegram import Update, InlineKeyboardMarkup, InlineKeyboardButton
|
||
|
from telegram.ext import ApplicationBuilder, ContextTypes, CommandHandler, MessageHandler, filters, InlineQueryHandler
|
||
|
import logging
|
||
|
from render import render_text_on_image
|
||
|
|
||
|
import os
|
||
|
|
||
|
|
||
|
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||
|
level=logging.INFO)
|
||
|
|
||
|
logger = logging.getLogger(__name__)
|
||
|
|
||
|
TOKEN = os.getenv("TOKEN")
|
||
|
|
||
|
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||
|
await context.bot.send_message(chat_id=update.effective_chat.id, text='Hi! I respond with a picture to any message.')
|
||
|
|
||
|
async def respond_with_picture(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||
|
file = render_text_on_image("red_ebalo.png", update.message.text)
|
||
|
await context.bot.send_sticker(chat_id=update.effective_chat.id, sticker=file)
|
||
|
|
||
|
async def inline_respond_with_sticker(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||
|
|
||
|
query = update.inline_query.query
|
||
|
if not query:
|
||
|
return
|
||
|
|
||
|
bot_info = await context.bot.get_me()
|
||
|
|
||
|
file = render_text_on_image("red_ebalo.png", query)
|
||
|
|
||
|
file_id = (await context.bot.send_sticker(chat_id=-1002471390283, sticker=file)).sticker.file_id
|
||
|
results = [
|
||
|
{
|
||
|
"type": "sticker",
|
||
|
"id": "1",
|
||
|
"sticker_file_id": file_id
|
||
|
}
|
||
|
]
|
||
|
await context.bot.answer_inline_query(update.inline_query.id, results)
|
||
|
|
||
|
def main():
|
||
|
application = ApplicationBuilder().token(TOKEN).build()
|
||
|
|
||
|
start_handler = CommandHandler('start', start)
|
||
|
picture_handler = MessageHandler(filters.TEXT & ~filters.COMMAND, respond_with_picture)
|
||
|
|
||
|
application.add_handler(start_handler)
|
||
|
application.add_handler(picture_handler)
|
||
|
application.add_handler(InlineQueryHandler(inline_respond_with_sticker))
|
||
|
|
||
|
application.run_polling()
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|