initial
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
import asyncio
|
||||
import configparser
|
||||
|
||||
from aiogram import Bot, Dispatcher, F
|
||||
from aiogram.filters import Command
|
||||
from aiogram.types import Message, InlineQuery, InlineKeyboardButton, InlineKeyboardMarkup, InlineQueryResultArticle, InputTextMessageContent,BufferedInputFile, InputMediaPhoto, ChosenInlineResult
|
||||
from io import BytesIO
|
||||
|
||||
from image import generate_quote
|
||||
from formater import format_quote
|
||||
|
||||
dp = Dispatcher()
|
||||
bot = None
|
||||
|
||||
|
||||
works = {}
|
||||
|
||||
async def main():
|
||||
global bot
|
||||
cfg = configparser.ConfigParser()
|
||||
try:
|
||||
cfg.read("config.ini")
|
||||
except:
|
||||
raise "can't load config.ini, make sure you have one"
|
||||
token = cfg['bot']['BOT_TOKEN']
|
||||
if len(token) == 0:
|
||||
raise "token seems empty"
|
||||
bot = Bot(token=token)
|
||||
|
||||
print("Starting bot...")
|
||||
try:
|
||||
await dp.start_polling(bot)
|
||||
finally:
|
||||
print("Bot stopped")
|
||||
|
||||
@dp.message(F.text, Command("start"))
|
||||
async def start(message: Message):
|
||||
await message.answer(f"usage:\n\n@{(await bot.get_me()).username} some cool quote")
|
||||
|
||||
@dp.inline_query()
|
||||
async def inline_query(query: InlineQuery):
|
||||
text = query.query.strip()
|
||||
|
||||
result = InlineQueryResultArticle(
|
||||
id="generate",
|
||||
title="сгенерировать",
|
||||
description=text,
|
||||
input_message_content=InputTextMessageContent(
|
||||
message_text="ща",
|
||||
),
|
||||
reply_markup=InlineKeyboardMarkup(
|
||||
inline_keyboard=[
|
||||
[
|
||||
InlineKeyboardButton(
|
||||
text="⠀",
|
||||
callback_data="noop",
|
||||
)
|
||||
]
|
||||
]
|
||||
),
|
||||
)
|
||||
|
||||
await query.answer(
|
||||
results=[result],
|
||||
cache_time=0,
|
||||
is_personal=True,
|
||||
)
|
||||
|
||||
|
||||
@dp.callback_query(F.data == "noop")
|
||||
async def noop(callback):
|
||||
await callback.answer()
|
||||
|
||||
|
||||
@dp.chosen_inline_result()
|
||||
async def chosen_inline_result(result: ChosenInlineResult):
|
||||
if not result.inline_message_id:
|
||||
print("Telegram не дал inline_message_id")
|
||||
return
|
||||
|
||||
text = result.query
|
||||
|
||||
image = generate_quote(format_quote(text))
|
||||
|
||||
buffer = BytesIO()
|
||||
image.save(buffer, "PNG")
|
||||
buffer.seek(0)
|
||||
|
||||
msg = await bot.send_photo(
|
||||
chat_id=result.from_user.id,
|
||||
photo=BufferedInputFile(
|
||||
buffer.read(),
|
||||
filename="dengi.png",
|
||||
),
|
||||
)
|
||||
|
||||
file_id = msg.photo[-1].file_id
|
||||
|
||||
await bot.delete_message(
|
||||
result.from_user.id,
|
||||
msg.message_id,
|
||||
)
|
||||
|
||||
await bot.edit_message_media(
|
||||
inline_message_id=result.inline_message_id,
|
||||
media=InputMediaPhoto(
|
||||
media=file_id,
|
||||
),
|
||||
)
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user