Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Илья Пятницкий. Боты в Telegram: просто о простом

Илья Пятницкий. Боты в Telegram: просто о простом

В своём докладе я расскажу о ботах в телеграмме, их основном функционале и приятных плюшках, рассмотрю режимы их работы и примеры использования. Также я расскажу о том, как написать своего бота и не совершить ошибок новичка.

More Decks by Python Community Chelyabinsk

Other Decks in Programming

Transcript

  1. Что такое бот? Бот — это маленькое приложение, запускаемое внутри

    телеграмма. Пользователи могут писать ему сообщения, команды и специальные inline запросы. •* У ботов нет статуса онлайн/не онлайн, вместо этого у них в статусе просто написано „бот“ •* Боты не могут сами начать переписку с пользователями •* Имена ботов всегда заканчиваются на bot •* Добавленные в группы боты по дефолту не получают сообщений •* Боты не спят, едят или жалуются (если предварительно на это не запрограммированы)
  2. Filters Text, audio, contact, video, chat, group, document, location,photo,reply,sticker (Filters.video

    | Filters.photo) & ~ Filters.forwarded Если этого мало, можно использовать Filters.entity(MessageEntity.*) mention, hashtag, bot_command, url, email, bold, italic, code, pre, text_link, text_mention Если даже этого недостаточно, можно написать свой фильтр from telegram.ext import BaseFilter class SimpleFilter(BaseFilter): def filter(self, message): return 'Napoleon' in message.text filter_awesome = FilterAwesome()
  3. Работа с медиафайлами? Нет ничего проще Документ document = update.message.document

    Фото photo = update.message.photo[-1] bot.send_photo(chat_id=chat_id, photo=open('tests/test.png', 'rb')) bot.send_voice(chat_id=chat_id, voice=open('tests/telegram.ogg', 'rb')) bot.send_photo(chat_id=chat_id, photo='https://telegram.org/img/t_logo.png')
  4. Ну и самое важное... TOKEN='YOUR_BOT_TOKEN' REQUEST_KWARGS={ 'proxy_url': 'URL_OF_THE_PROXY_SERVER', 'urllib3_proxy_kwargs': {

    'username': 'PROXY_USER', 'password': 'PROXY_PASS', } } updater = Updater(TOKEN, request_kwargs=REQUEST_KWARGS)