mirror of
https://github.com/civsocit/olgram.git
synced 2023-07-22 01:29:12 +03:00
inlines first iteration
This commit is contained in:
parent
177603606f
commit
a7a08639cf
@ -11,7 +11,7 @@ import logging
|
|||||||
import typing as ty
|
import typing as ty
|
||||||
from olgram.settings import ServerSettings
|
from olgram.settings import ServerSettings
|
||||||
from olgram.models.models import Bot, GroupChat, BannedUser
|
from olgram.models.models import Bot, GroupChat, BannedUser
|
||||||
|
from server.inlines import inline_handler
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
_logger.setLevel(logging.INFO)
|
_logger.setLevel(logging.INFO)
|
||||||
@ -136,6 +136,11 @@ async def receive_left(message: types.Message):
|
|||||||
await bot.save()
|
await bot.save()
|
||||||
|
|
||||||
|
|
||||||
|
async def receive_inline(inline_query):
|
||||||
|
bot = db_bot_instance.get()
|
||||||
|
return await inline_handler(inline_query, bot)
|
||||||
|
|
||||||
|
|
||||||
async def receive_migrate(message: types.Message):
|
async def receive_migrate(message: types.Message):
|
||||||
bot = db_bot_instance.get()
|
bot = db_bot_instance.get()
|
||||||
from_id = message.chat.id
|
from_id = message.chat.id
|
||||||
@ -175,6 +180,7 @@ class CustomRequestHandler(WebhookRequestHandler):
|
|||||||
dp.register_message_handler(receive_left, content_types=[types.ContentType.LEFT_CHAT_MEMBER])
|
dp.register_message_handler(receive_left, content_types=[types.ContentType.LEFT_CHAT_MEMBER])
|
||||||
dp.register_message_handler(receive_migrate, content_types=[types.ContentType.MIGRATE_TO_CHAT_ID])
|
dp.register_message_handler(receive_migrate, content_types=[types.ContentType.MIGRATE_TO_CHAT_ID])
|
||||||
dp.register_message_handler(receive_group_create, content_types=[types.ContentType.GROUP_CHAT_CREATED])
|
dp.register_message_handler(receive_group_create, content_types=[types.ContentType.GROUP_CHAT_CREATED])
|
||||||
|
dp.register_inline_handler(receive_inline)
|
||||||
|
|
||||||
return dp
|
return dp
|
||||||
|
|
||||||
|
36
server/inlines.py
Normal file
36
server/inlines.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
from aiocache import cached
|
||||||
|
import hashlib
|
||||||
|
from aiogram.types import InlineQuery, InputTextMessageContent, InlineQueryResultArticle
|
||||||
|
|
||||||
|
from olgram.models.models import Bot, DefaultAnswer
|
||||||
|
import typing as ty
|
||||||
|
|
||||||
|
|
||||||
|
@cached(ttl=1)
|
||||||
|
async def get_phrases(bot: int) -> ty.List:
|
||||||
|
objects = await DefaultAnswer.filter(bot_id=bot)
|
||||||
|
return [obj.text for obj in objects]
|
||||||
|
|
||||||
|
|
||||||
|
async def inline_handler(inline_query: InlineQuery, bot: Bot):
|
||||||
|
# Check permissions at first
|
||||||
|
# user_id = inline_query.from_user.id
|
||||||
|
# if bot.super_chat_id() != user_id:
|
||||||
|
# return await inline_query.answer([], cache_time=1) # forbidden
|
||||||
|
|
||||||
|
all_phrases = await get_phrases(bot.id)
|
||||||
|
phrases = [phrase for phrase in all_phrases if inline_query.query.lower() in phrase.lower()]
|
||||||
|
|
||||||
|
items = []
|
||||||
|
for phrase in phrases:
|
||||||
|
|
||||||
|
input_content = InputTextMessageContent(phrase)
|
||||||
|
result_id: str = hashlib.md5(phrase.encode()).hexdigest()
|
||||||
|
item = InlineQueryResultArticle(
|
||||||
|
id=result_id,
|
||||||
|
title=phrase,
|
||||||
|
input_message_content=input_content,
|
||||||
|
)
|
||||||
|
items.append(item)
|
||||||
|
|
||||||
|
await inline_query.answer(results=items, cache_time=1)
|
Loading…
Reference in New Issue
Block a user