This commit is contained in:
2026-08-10 09:59:42 +03:00
commit 9191242a93
13 changed files with 747 additions and 0 deletions
+112
View File
@@ -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())