3 горизонтальные линии, бургер
3 горизонтальные линии, бургер
3 горизонтальные линии, бургер
3 горизонтальные линии, бургер

3 горизонтальные линии, бургер
Удалить все
ЗАГРУЗКА ...

Содержание



    Как сделать инлайн телеграм бота

    Часы
    10.01.2025
    /
    Часы
    02.10.2025
    /
    Часы
    3 минуты
    Глазик
    881
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0

    Вступление

    В данной статье я покажу как работает инлайн телеграм бот, как отправлять ответы и как эти ответы настраивать. Так же ты узнаешь как можно настроить переводы для твоего бота и конечно сможешь протестировать моего бота, @joker_gut_bot
    В чём вообще суть inline режима ботов? Суть в том, что пользователь может отправлять ответы бота от своего имени в любые чаты. Некоторые такие боты внедрены в сам телеграм, например:
    1. @like
    2. @poll
    3. @gif
    4. @vid
    5. @pic
    6. @bing
    7. @wiki
    8. @imdb
    9. @bold
    И ты конечно же можешь сделать свой собственный если потребуется.

    Подготовка и установка необходимых пакетов

    Нам будут необходимы следующие пакеты:
    1. Библиотека aiogram
    2. Библиотека Babel
    Первая необходима для связи и работы с телеграм API. Библиотека Babel потребуется для переводов.
    pip install Babel aiogram pandas
    Токен бота я храню в отдельном файле под названием .env, сделай его. Он содержит лишь одну строку: BOT_TOKEN=1111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    Надеюсь к этому моменту у тебя уже есть токен бота и подготовлено виртуальное окружение для него. Никогда не устанавливай python-пакеты без соответствующего виртуального окружения.
    Полную, базовую настройку телеграм бота ты можешь посмотреть в этой статье.

    Пишем inline-бота

    Переходим к непосредственному написанию бота. В файле main.py сделай импорт следующих модулей:
    import asyncio import logging import sys import uuid from aiogram import F from aiogram.types import Message, InlineQuery, InlineQueryResultArticle, InputTextMessageContent, InlineQueryResultPhoto from aiogram.filters import Command from config import bot_dispatcher, bot
    После чего, в конец добавим точку входа и стандартные обработчики для запуска приложения и для помощи с его функционалом:
    @bot_dispatcher.message(Command('help')) async def help(message: Message): await message.answer("Этот бот является примером того, как можно реализовать inline функционал для него.") await message.answer("/startapp - запустить приложение") await message.answer("@joker_gut_bot memes - запросить мемы для показа") await message.answer("@joker_gut_bot greeting - запросить ответы по умолчанию") @bot_dispatcher.message(Command("startapp")) async def start_app(message: Message): await message.answer("Этот бот является примером того, как можно реализовать inline функционал для него.") async def main() -> None: await bot_dispatcher.start_polling(bot) if __name__ == "__main__": logging.basicConfig(level=logging.INFO, stream=sys.stdout) asyncio.run(main())
    Теперь в файле config.py добавим импортёр токена и роутер по умолчанию - bot_dispatcher:
    from aiogram import Bot, Dispatcher # Читает файл .env и отправляет токен телеграмму with open(".env", "r") as file: buffer = file.read() line_pos = buffer.find("BOT_TOKEN") TOKEN = buffer[buffer.find("=", line_pos) + 1:] bot = Bot(TOKEN) bot_dispatcher = Dispatcher(bot=bot)
    Скелет бота готов. И его можно даже запустить, но никакого функционала он пока не предусматривает. Теперь начнём добавлять к нему функционал инлайн ботов. Всего телеграм поддерживает 20 инлайн-ответов:
    1. InlineQueryResultCachedAudio
    2. InlineQueryResultCachedDocument
    3. InlineQueryResultCachedGif
    4. InlineQueryResultCachedMpeg4Gif
    5. InlineQueryResultCachedPhoto
    6. InlineQueryResultCachedSticker
    7. InlineQueryResultCachedVideo
    8. InlineQueryResultCachedVoice
    9. InlineQueryResultAudio
    10. InlineQueryResultDocument
    11. InlineQueryResultGif
    12. InlineQueryResultMpeg4Gif
    13. InlineQueryResultPhoto
    14. InlineQueryResultVideo
    15. InlineQueryResultVoice
    16. InlineQueryResultContact
    17. InlineQueryResultGame
    18. InlineQueryResultLocation
    19. InlineQueryResultArticle
    20. InlineQueryResultVenue
    Как видно, есть три группы ответов. Первая с корнем Cached, это значит бот будет брать данные из базы данных. Вторая группа без корня Cached. Они используют ссылки в качестве источника данных. И третья группа, состоит из тех ответов, которые не имеют аналога с Cached.
    Показывать работу инлайн ботов буду на примере InlineQueryResultArticle и InlineQueryResulltPhoto. Добавим следующие функции в main.py:
    import asyncio import logging import sys import uuid from aiogram import F from aiogram.types import Message, InlineQuery, InlineQueryResultArticle, InputTextMessageContent, InlineQueryResultPhoto from aiogram.filters import Command from config import bot_dispatcher, bot @bot_dispatcher.inline_query(F.query == "greeting") async def send_greetings(inline_query: InlineQuery): results = [] results.append(InlineQueryResultArticle( id=str(uuid.uuid4()), title="Обычное приветствие", input_message_content=InputTextMessageContent( disable_web_page_preview=True, message_text="Приветствую я вас сегодня." ) )) results.append(InlineQueryResultArticle( id=str(uuid.uuid4()), title="Жёсткое приветствие", input_message_content=InputTextMessageContent( disable_web_page_preview=True, message_text="Ну чё, как дела" ) )) results.append(InlineQueryResultArticle( id=str(uuid.uuid4()), title="Спокойное приветствие", input_message_content=InputTextMessageContent( disable_web_page_preview=True, message_text="Привет" ) )) await inline_query.answer(results) @bot_dispatcher.inline_query(F.query == "memes") async def send_user_images(inline_query: InlineQuery): results = [] results.append(InlineQueryResultPhoto( id=str(uuid.uuid4()), photo_url="https://wisconsinskydivingcenter.com/wp-content/uploads/2024/05/you-dont-need-a-parachute-to-go-skydiving-meme.jpeg", thumbnail_url="https://wisconsinskydivingcenter.com/wp-content/uploads/2024/05/you-dont-need-a-parachute-to-go-skydiving-meme.jpeg" )) results.append(InlineQueryResultPhoto( id=str(uuid.uuid4()), photo_url="https://jungleroots.com/wp-content/uploads/2022/11/1_OkVxoXBTygSKB8K-zbB7uQ-300x176.jpeg", thumbnail_url="https://jungleroots.com/wp-content/uploads/2022/11/1_OkVxoXBTygSKB8K-zbB7uQ-300x176.jpeg" )) results.append(InlineQueryResultPhoto( id=str(uuid.uuid4()), photo_url="https://livestorm.imgix.net/1127/1651607695-obi-wan-alarm-work-meme.jpeg?h=auto&w=730&fm=jpeg&auto=format&q=90&dpr=1", thumbnail_url="https://livestorm.imgix.net/1127/1651607695-obi-wan-alarm-work-meme.jpeg?h=auto&w=730&fm=jpeg&auto=format&q=90&dpr=1" )) await inline_query.answer(results) @bot_dispatcher.message(Command('help')) async def help(message: Message): await message.answer("Этот бот является примером того, как можно реализовать inline функционал для него.") await message.answer("/startapp - запустить приложение") await message.answer("@joker_gut_bot memes - запросить мемы для показа") await message.answer("@joker_gut_bot greeting - запросить ответы по умолчанию") @bot_dispatcher.message(Command("startapp")) async def start_app(message: Message): await message.answer("Этот бот является примером того, как можно реализовать inline функционал для него.") async def main() -> None: await bot_dispatcher.start_polling(bot) if __name__ == "__main__": logging.basicConfig(level=logging.INFO, stream=sys.stdout) asyncio.run(main())
    Обработчик send_greetings вызывается тогда, когда после имени бота пользователь написал greeting. Всё что она делает это запихивает в список 3 InlineQueryResultArticle и возвращает пользователю ответ на выбор. Вот так:
    Обработчик send_user_images делает то же самое только с картинками, InlineQueryResultArticle.
    Телеграм бот готов, осталось его только развернуть на сервере и вуаля, твой новый помощник готов. О том как это сделать я писал в отдельной статье, ооо, а вот и она. Более подробно о нём ты можешь ознакомиться здесь.

    Делаем переводы(опционально)

    Так же если, тебе нужно сделать своего бота, поддерживающим несколько языков общения, то тебе следует ещё ознакомиться с этой статьёй, где я подробно показываю, как сделать это.

    Заключение

    Я старался сделать статью про inline-ботов максимально простой и не перегруженной всякими базами данных или переводами. Но переводы я в конце концов включил ◑﹏◐. Все файлы и ресурсы бота ты сможешь найти на соответствующей странице инструментов. Чирс.


    Не забудь поделиться, лайкнуть и оставить комментарий)

    Комментарии

    (0)

    captcha
    Отправить
    ЗАГРУЗКА ...
    Сейчас тут пусто. Буть первым (o゚v゚)ノ

    Другое

    Похожие статьи


    Как я создал телеграм бота вопросов. Или квиз бота | Тим зе Вебмастер

    Часы
    16.11.2023
    /
    Часы
    05.10.2025
    Глазик
    5775
    Сердечки
    4
    Соединённые точки
    1
    Соединённые точки
    0
    Соединённые точки
    1
    Готовый телеграм бот, на aiogram. С готовыми исходниками и скриптами бота на питоне. Данный тг бот уже запущен и готов, ищи TimQuizzer

    Виды телеграм ботов, какими бывают и их классификация

    Часы
    22.12.2024
    /
    Часы
    02.10.2025
    Глазик
    978
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Тут ты узнаешь классификацию телеграмм ботов и возможности которыми они обладают

    Как сделать и подключить токен для телеграм бота, его настройка

    Часы
    14.01.2025
    /
    Часы
    02.10.2025
    Глазик
    2949
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    1
    В этой статье ты узнаешь как я делаю токены для тг ботов, как их подключаю, где храню его и как настраиваю его.

    Использованные термины


    Релевантные вопросы