Содержание
- 1 Чаты
- 2 Каналы
- 3 Tproger
- 4 GeekBrains
- 5 Руки
- 6 TechSparks
- 7 Front End Dev
- 8 UniLecs
- 9 TechRocks
- 10 Machine Learning World
- 11 Библиотека программиста
- 12 StartAndroid
- 13 Microsoft Developer Community
- 14 iOS dev
- 15 Мой круг
- 16 Remote IT
- 17 GitHub Repos
- 18 ITMeeting
- 19 Тестировщики нужны
- 20 DBA RU
- 21 ГОРИ
- 22 Big Data Ru
- 23 Web Structure
- 24 Coding RU
- 25 Как создать Telegram бота?
- 26 Приступаем к кодированию
SEO-аналитик, автор Telegram-канала @devakatalk Сергей Кокшаров составил большую подборку каналов и чатов в Telegram для программистов.
При составлении списка интересных и полезных каналов и чатов для разработчиков активно использовались другие подборки, в частности — совместный труд программистов на GitHab. Без обоюдных усилий эта огромная подборка никогда не была бы создана.
Чаты
Языки программирования
telegram.me/ru_python — Чат разработчиков на Питоне.
telegram.me/JSlang — Разработчики на JavaScript.
telegram.me/javascript_alert — Чат для тех, у кого есть вопросы по реализации задачи в JavaScript.
telegram.me/phpgeeks — Чат разработчиков на PHP.
telegram.me/python_beginners — Чат новичков в Питоне.
telegram.me/jvmchat — Сообщество разработчиков под JVM и Android.
telegram.me/ProCxx — Разработчики C++.
telegram.me/proGO — Разработчики на Go.
telegram.me/joinchat/Be4rsT3Uyr1TjmSlrRc77g — Новички JavaScript.
telegram.me/rubylang — Разработчики Ruby и Ruby on Rails.
telegram.me/proRuby — Язык программирования Ruby.
telegram.me/codenamecrud — Random Ruby Chat.
telegram.me/gogolang — Ещё один чат разработчиков Go.
telegram.me/javarush — Разработчики Java.
telegram.me/rudepython — Python без девочек.
telegram.me/spbpython — Питонщики из Питера.
telegram.me/phpclub — PHP клуб.
telegram.me/haskellru — Разработчики на Haskell.
telegram.me/joinchat/AAtJOjx9l5F9IhkHIIVP9Q — Devall | PHP.
telegram.me/rupython — Ответы на вопросы по разработке на Python.
telegram.me/proRust — Чат разработчиков на Rust.
telegram.me/CSharpChat — Русский чат разработчиков C#.
telegram.me/proasm — Чат про ассемблер.
telegram.me/propython — Сообщество разработчиков под Python.
Операционные системы
telegram.me/android_ru — Чат разработчиков приложений под Android.
telegram.me/fedora — Пользователи Fedora.
telegram.me/ru_ubuntu — Последователи Ubuntu.
telegram.me/joinchat/CfDnUz1yOgkqCinm6dra2A — Ещё один чат убунтологов.
telegram.me/ios_ru — Разрабочики под iOS.
telegram.me/that_is_linux — Линуксоиды.
telegram.me/grouplinux — Помощь по Linux.
telegram.me/reactos_ru — Свидетели ReactOS.
telegram.me/proembedded — Встраиваемые операционные системы.
telegram.me/macosx86 — iHack — Hackintosh&Jailbreak.
telegram.me/elementary_os — Конференция русскоязычного сообщества Linux-дистрибутива elementary OS.
telegram.me/russianfedora — Групповой чат русскоязычных поклонников Fedora и RFRemix.
telegram.me/joinchat/Be4rsT5IrA8x69FnrpMMvw — Операционная система Microsoft Windows.
telegram.me/android_talks — Конференция по операционной системе Google Android.
telegram.me/androidev — Чат для живого общения Android-разработчиков.
telegram.me/freebsd_ru — Сообщество разработчиков FreeBSD.
Читать также
Руководство: зачем маркетологу Telegram и как правильно в нём продвигаться
Профессия
Python-разработчик
Узнать больше
- Научитесь с нуля программировать на Python
- 6 месяцев реального опыта разработки в резюме и 4 проекта в портфолио: онлайн-библиотека, кулинарная книга, кредитный калькулятор, сервис знакомств
Чаты для разработчиков на разные темы
telegram.me/joinchat/BsHycTvxzzENmrjwAwpp-Q — Чат каналов addmeto и techsparks.
telegram.me/devops_ru — Чат по теме DevOps.
telegram.me/DC7499 — DC7499.
telegram.me/pogromisty — Программисты-эмигранты.
telegram.me/jchat — Чат Джея.
telegram.me/habrachat — Сообщество Хабрахабра.
telegram.me/it_cat_encrypted — Чат паблика IT-кот.
telegram.me/joinchat/ABI4pz3M7FCxoDZcdcfVUA — Разработчики чат-ботов.
telegram.me/botoid — Разработчики ботов для Telegram.
telegram.me/devschat — Сообщество веб-разработчиков.
telegram.me/coding_ru — Чат русскоязычных программистов.
telegram.me/upworkcom — Devall.
telegram.me/borodutcher — Чат программистов-стартаперов.
telegram.me/alldev — Предбанник для официальной группы Devall.
telegram.me/ru_board — Группа форума ru-board.
telegram.me/WebProgrammingRu — Чат веб-программистов.
telegram.me/usr_local_bkk — Те, кто уехал на Бангкок.
Фреймворки
telegram.me/react_js — React, Redux и Relay.
telegram.me/nodejs_ru — Node.js и микросервисы.
telegram.me/reactnative_ru — Чат на тему React Native.
telegram.me/angular_js — Темы, посвященные Angular 1.x и экосистеме.
telegram.me/angular_ru — Темы, посвящённые Angular 2 и его экосистемы.
telegram.me/laravel_pro — Чат для всех программистов, работающих с PHP-фреймворком Laravel.
telegram.me/pydjango — Чат разработчиков Django.
telegram.me/ru_laravel — Сообщество разработчиков Laravel.
CMS
telegram.me/bitrixfordevelopers — Битрикс для разработчиков.
telegram.me/joomlaru — Разработчики под Joomla.
telegram.me/ru_modx — Русскоязычное сообщество MODx.
telegram.me/joomla_russia — Сообщество Joomla.
Базы данных
telegram.me/pgsql — Про PostgreSQL.
telegram.me/dba_ru — Чат о базах данных.
telegram.me/MongoDBRussian — Чат про MongoDB.
telegram.me/PostgreSQL_1C_Linux — PostgreSQL + 1C + Linux.
https://t.me/oracle_ru — Русскоязычная группа, связанная с разработкой/администрированием на БД Oracle.
Другие чаты про админстрирование, разработку и анализ данных
telegram.me/joinchat/ADcH6j8DMoVxtqFI0DASpA — Чат типичных сисадминов.
telegram.me/web_structure — Верстка сайтов HTML/CSS/JS/PHP.
telegram.me/joinchat/ABI4pz6rz2iVzWUzaVqpmA — Чат про нейронные сети.
telegram.me/gamedevtalk — Чат о разработке игр.
telegram.me/protelecom — Чат связистов.
telegram.me/qa_ru — Сообщество тестировщиков.
telegram.me/bigdata_ru — Всё о big data и машинном обучении.
telegram.me/datasciencechat — Чат о Data Science.
telegram.me/MiDevices — Свободное общение обо всём и Xiaomi.
telegram.me/ru_sysadmin — Чат сисадминов.
telegram.me/pro_ansible — Чат взаимопомощи по Ansible.
telegram.me/tgchat — Телеграм-гики
telegram.me/typescript_ru — Чат на темы TypeScript, Flow.
telegram.me/ru_electronics — Чат про электронику.
telegram.me/nocproject — NOC Project.
telegram.me/ru_arduino — Околоэлектронные темы.
telegram.me/ru_voip — Чат на тему VoIP.
telegram.me/ZabbixPro — Разработчики Zabbix.
telegram.me/asterisk_ru — Asterisk и все, что с ним связано.
telegram.me/proelixir — Общение про язык Elixir.
telegram.me/manjarolinux — Разработчики Manjaro.
telegram.me/pro_enterprise — Чат про сервера и хранение данных.
telegram.me/DomainGuru — Чат для обсуждения новостей и событий в доменной индустрии.
telegram.me/ProLua — Чат про Lua-движки.
telegram.me/pro_openstack — Обсуждение openstack, ceph и всего что с этим связано.
telegram.me/ru_raspberry — Чат, посвящённый Raspberry Pi, Orange Pi, Banana Pi.
telegram.me/pro_hosting — Советуем друг другу варианты хостинга, делимся опытом.
telegram.me/telecatethysis — Электроника и программирование.
telegram.me/forgeekschat — Чат для гиков.
Читать также
Что веб-разработчику нужно знать о современном вебе
Каналы
Для программистов
telegram.me/proglibrary — Библиотека программиста.
telegram.me/devapp — Сообщество мобильных разработчиков.
telegram.me/forwebdev — Канал о фронтенд веб-разработке.
telegram.me/mobilenewsru — Новости и статьи о мобильной индустрии.
telegram.me/webfl — Работа для фрилансеров.
telegram.me/chat_bots_news — Канал о чат-ботах и искусственном интеллекте.
telegram.me/itsecalert — Уведомления об уязвимостях в ПО.
telegram.me/ibach — Канал об информационной безопасности.
telegram.me/AndroidResId — Новости и ресурсы для андроид-разработчиков.
telegram.me/progamedev — Канал о разработке игр
telegram.me/webstandards_ru — Ежедневные новости фронтенда от «Веб-стандартов».
telegram.me/rudevandroid — Андроид-разработка, статьи и библиотеки (на английском).
telegram.me/devops_deflope — Новостной канал подкаста Devops Deflope
telegram.me/ru_python_books — Книги по Питону.
telegram.me/front_end_dev — Ещё один канал о фронтенд-разработке.
telegram.me/networklsa — Строительство сетей (на английском).
telegram.me/deeplearning_ru — Deep Learning.
telegram.me/devbrain — Новости и статьи по разработке ПО.
telegram.me/github_repos — Ссылки на полезные репозитории в Github.
telegram.me/javaswag — Отобранные статьи по Java и JVM.
t.me/csharp_1001_notes — Регулярные короткие заметки по C# и .NET.
Для гиков
telegram.me/addmeto — Канал Бобука.
telegram.me/techsparks — Новости хайтека от Себранта.
telegram.me/NeuroScienceRu — Архив материалов по нейронаукам.
telegram.me/nsmag — Официальный канал Naked Science.
telegram.me/brodetsky — Технологии, медиа и общество.
telegram.me/g33ks — События информационных технологий.
telegram.me/beardycast — Новости о гаджетах, науке, играх и кино.
telegram.me/opendatascience — Наука о данных (англоязычный канал).
telegram.me/globchan — Канал о науке и технологиях.
telegram.me/forgeeks — Новости технологий, дайджесты.
telegram.me/themarfa — Лайфхаки из мира технологий, советы по программам, скидки.
telegram.me/funscience — Новостные подборки о технологиях, гаджетах, науке и космосе.
Мнение автора и редакции может не совпадать. Хотите написать колонку для Нетологии? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.
Читать также
Разбираемся в Scrum и Kanban
Tproger
Количество подписчиков: 60 000+.
Частота обновлений: 2–3 записи в день.
Тематика: новости, статьи, рейтинги, обсуждения.
Маловероятно, что в современном рунете хоть один программист не знает про ресурс tproger. Здесь есть всё: от советов «как написать идеальный код» до рассуждений «какую мышку выбрать». Обновления не слишком частые, зато информативные. Пару раз в день зайти на канал —то, что доктор тимлид прописал.
GeekBrains
Количество подписчиков: 3 200+.
Частота обновления: 1–5 записей в день.
Тематика: новости, статьи.
На канале в режиме реального времени отображается всё, что происходит у нас на ресурсе. Здесь появляются ссылки на свежие статьи в блоге и СМИ, анонсы вебинаров и крупных IT-событий, уникальные скидки на обучение и просто полезные материалы. Если вы учитесь программированию или только планируете присоединиться к нам — обязательно подписывайтесь.
Руки
Количество подписчиков: 2 900+.
Частота обновлений: 1 запись в день.
Тематика: IT-новости.
Канал начинал с гиковских статей про разработку, а сейчас публикует в основном новости, рейтинги и подборки. Привлекает качеством контента — никаких обновлений ради обновлений.
TechSparks
Количествоподписчиков: 37 800+.
Частотаобновлений: 2–3 записи в день.
Тематика: IT-новости.
О чём. Канал-агрегатор IT-новостей, которые не увидишь на первых строках крупных ресурсов. Наполнение зависит от автора, Андрея Себранта, — и это сказывается на регулярности публикаций и диапазоне задействованных ресурсов.
Front End Dev
Количествоподписчиков: 20 200+.
Частотаобновлений: 2–5 записей в день.
Тематика: объявления о вакансиях, статьи по фронтенду.
Для фронтенд-разработчиков здесь есть всё — кейсы, статьи, новости, обзоры обновлений, анонсы. Появляются тут и такие вещи, которые будет полезно почитать программистам смежных специальностей и всем, кто интересуется IT. Например, статьи о переменах во внешнем облике интернета или анонсы о предстоящих конференциях.
UniLecs
Количествоподписчиков: 19 100+.
Частотаобновлений: 1–2 записи в день.
Тематика: задачи по программированию, статьи и лекции по Computer Science.
UniLecs — это канал «со звёздочкой». Здесь вы найдёте задачи олимпиадного формата по программированию и алгоритмам, ссылки на статьи для углублённого изучения языков и просто интересные лекции, посвящённые науке о данных.
TechRocks
Количествоподписчиков: 16 300+.
Частотаобновлений: 1–3 записи в день.
Тематика: статьи и новости про IT.
95% записей данного канала — ссылки на статьи портала techrocks.ru с кратким описанием. Подойдёт тем, кому не нужен специализированный канал по своему языку или направлению. Здесь можно найти и общие новости, и конкретные кейсы: например, по использованию Python в VS Code или приёмам CSS при оформлении сайта.
Machine Learning World
Количествоподписчиков: 6 700+.
Частотаобновлений: 1–2 записи в день.
Тематика: новости ИИ.
Ресурс на английском языке, полностью посвящённый искусственному интеллекту и машинному обучению. Уникален тем, что здесь нет пространных статей от неизвестных людей — только отчёты крупных конференций, ссылки на продукты, научные исследования, полезные твиттер- и телегам-каналы.
Библиотека программиста
Количествоподписчиков: 69 600+.
Частотаобновлений: 1–4 записи в день.
Тематика: статьи и обзоры книг.
Изначально канал продвигался как место, где можно узнать авторитетное, объективное мнение о книгах по программированию. Со временем здесь стали говорить и об IT-статьях, в том числе и по смежной тематике: собеседования, железо, финансовые рейтинги. При этом канал по-прежнему актуален и интересен.
StartAndroid
Количествоподписчиков: 7 900+.
Частотаобновлений: 1 запись в день.
Тематика: всё про Android-разработку.
Новости, статьи, релизы, вебинары и просто выступления про Android. Если вы причастны к мобильной разработке на этой платформе, подписаться на этот канал действительно стоит. Так вы точно будете знать тренды и каждый уголок интерфейса любого целевого устройства.
Microsoft Developer Community
Количествоподписчиков: 3 800+.
Частотаобновлений: 1 запись в день.
Тематика: всё про разработку под и от Microsoft.
Здесь авторы ежедневно выкатывают порцию свежих новостей о релизах каких-нибудь продуктов, анонсах крупных конференций или официальные обзоры средств разработки Microsoft.
iOS dev
Количествоподписчиков: 6 200+.
Частотаобновлений: 1–3 записи в день.
Тематика: всё об iOS-разработке.
Завершаем список каналов про платформы «яблочным» сообществом iOS dev. Здесь собрано много информации по прикладной части разработки — например, обзоры возможностей кнопок и ссылок. Есть и сильное новостное направление: анонсы и ссылки на видео с конференций, релизы продуктов и другие статьи.
Мой круг
Количествоподписчиков: 4 000+.
Частотаобновлений: 2–5 записей в час.
Тематика: вакансии и HR-статьи.
Портал «Мой круг» оперативно сообщает здесь о свежих вакансиях в IT-индустрии и даёт советы, как быстро и успешно найти работу. При помощи чат-бота можно установить фильтр и видеть только сообщения из интересных вам рубрик.
Remote IT
Количествоподписчиков: 17 900+.
Частотаобновлений: 1–5 записей в день.
Тематика: вакансии.
Канал посвящен мечте всех офисных работников — работе со свободным графиком, отсутствием дресс-кода и хорошей зарплатой. Подобные вакансии можно найти на этом канале.
GitHub Repos
Количествоподписчиков: 4 800+.
Частотаобновления: 4 репозитория в сутки.
Тематика: ссылки на исходники.
Здесь публикуются самые заметные релизы, которые появляются в хранилищах GitHub — полезные и удобные приложения, которые можно использовать. А ещё таким образом вы получаете возможность заглянуть в качественный код. В записях указывается оценка релиза и используемый язык.
ITMeeting
Количествоучастников: 4 200 +.
Частотаобновления: не более 3 публикаций по рабочим дням.
Тематика: анонсы бесплатных мероприятий по разработке.
На этом канале можно найти митапы, конференции, хакатоны, курсы, воркшопы, вебинары и всё, что ещё может объединить единомышленников в области разработки. Публикуются мероприятия по различным темам, такие как тестирование, программирование, аналитика и многое другое.
Тестировщики нужны
Количествоучастников: 500 +.
В заключение здесь — развивающийся канал по тестированию, который ведёт наш преподаватель Станислав Яковлев. Станислав рассказывает о том, как устроено тестирование в «Юле», даёт джунам советы для прохождения собеседований, разбирает примерные вопросы, а также делится рекомендациями по управлению командой — что делает канал полезным и для мидл/синьор-специалистов.
На десерт — несколько полезных чатов:
DBA RU
Количествоучастников: 1 700+.
Чат о базах данных. Сейчас в IT с ними работают более-менее все, так что полезно иметь эту ссылку под рукой. Ответы дают на все не слишком глупые вопросы.
ГОРИ
Количествоучастников: 2 000+.
Чат о разработке игр. Будет интересно подписаться не только игроделам, но и тем, кто тестирует компьютерные игры. Много узнаете про типовые баги и будете получать полезные ссылки на частные творения.
Big Data Ru
Количествоучастников: 3 800+.
Чат об ИИ и машинном обучении. Обсуждается здесь вообще всё: релизы библиотек и ПО, практическая сторона профессии, задачи, терминология, книги и даже курсы. Человек извне поймёт процентов 80 — но если хотите быть в профессии, то лучшей платформы «для привыкания» не придумаешь.
Web Structure
Количествоучастников: 4 000+.
Изначально чат был посвящён вёрстке сайтов, но сейчас о веб-разработке в целом. Хотите знать, есть ли смысл учиться на PHP-разработчика? Вам сюда. Хотите рекомендаций, что доработать в сайте, чтобы подороже его продать? Заходите. Просто за советом по коду? Вы знаете, что делать.
Coding RU
Количествоучастников: 1 300 +.
Этот чат посвящён всему, что обсуждают российские кодеры. Если скучаете по старым добрым чатам, где есть свои «цугундеры», где шутки бьют ниже пояса, а разговоры по теме теряются в сотнях офтопных посланий — вам сюда.
Больше подборок телеграм-каналов в нашем блоге:
Кстати, на какие каналы подписаны вы? Расскажите в комментариях, нам очень интересно 🙂
В последнее время Telegram у всех на слуху. Нужно отдать должное отделу маркетинга этого приложения, шумиху подняли на славу. Одной из основных “фишек” Telegram является его якобы защищённость – по словам Павла Дурова вся переписка между пользователями шифруется. Более того, ни одна спец.служба мира не будет иметь доступ к вашим сообщениям. Но в данной статье речь не об этом. Сегодня хотелось бы поговорить о не менее крутой фишке в Telegram, а именно о ботах. Помимо того, что в сети уже полно информации о различного рода Telegram ботах (github бот, например), мессенджер открыл своё API для разработчиков, и теперь каждый может создать своего собственного бота с блэкджеком и плюшками.
В статье я приведу пример написания онлайн бота с использованием Python и Django фреймворка. То есть мы “запилим” полноценное веб-приложение, которое будет крутиться на удалённом хосте и принимать команды от пользователей. Весь исходный текст доступен в моём github репозитории.
Документация, описывающая процесс взаимодействия с ботами Telegram находится тут. Чтобы не изобретать велосипед, я нашел неплохую Python библиотеку, реализующую все основные функции ботов – telepot. Как я уже упоминал ранее, для того, чтобы обслуживать пользователей нашего бота мы будет разрабатывать веб-приложение, используя Django фреймворк.
Как создать Telegram бота?
Для начала нам необходимо зарегистрировать в Telegram нашего будущего бота. Это делается следующим образом:
- Необходимо установить приложение Telegram на телефон или компьютер. Скачать приложение можно тут
- Добавляем к себе в контакт-лист бота с именем BotFather
- Запускаем процедуру “общения” с ботом нажатием кнопки Start. Далее перед нами предстанет список команд точно как на скриншоте.
- Для того, чтобы создать нового бота необходимо выполнить команду /newbot и следовать инструкциям. Обратите внимание, что username для бота должен всегда содержать в конце слово bot. Например, DjangoBot или Django_bot.
- Для нашего бота я выбрал имя PythonPlanetBot, так как его основная функция заключается в парсинге RSS feed сайта Python Planet и выдача информации о последних постах пользователю 🙂
После создания бота, обратите внимание на строку с текстом:
Use this token to access the HTTP API:
За которой следует т.н. token по которому мы будем манипулировать нашим ботом. Помимо функции создания telegram бота, BotFather также имеет ряд других возможностей:
- Присвоить боту описание
- Установить аватар
- Поменять token
и так далее. Полное описание доступных команд можно увидеть на первом скриншоте.
Приступаем к кодированию
Как я ранее уже упоминал, мы будем писать веб-приложение на Django. Но стоит отметить, что это делать необязательно. Можно обойтись и обычным Python скриптом, правда в этом случае необходимо будет периодически опрашивать Telegram на предмет новых запросов от пользователей бота (используя метод getUpdates) и увеличивая offset для получения самых последних данных без повторений. В Telegram существует два взаимоисключающих метода получения команд/сообщений для вашего бота.
- Использование вызова API метода getUpdates
- Установка Webhook
Установка Webhook заключается в передаче боту специального URL адреса на который будет поступать POST запрос каждый раз, когда кто-то начнёт посылать сообщения боту. Именно этот вариант мы и будем использовать для взаимодействия между ботом и его пользователем. Для того, чтобы задать URL, необходимо использовать API метод setWebhook. Отмечу, что URL должен начинаться с https, то есть иметь защищённое SSL соединение с валидным сертификатом. Telegram разрешает использовать самоподписанный сертификат, правда для этого необходимо в методе setWebhook передавать также публичный ключ в PEM формате (ASCII base64). Либо же можно получить валидный бесплатный SSL сертификат от Let’s Encrypt.
Подробнее о getUpdates и setWebhook можно почитать соответственно здесь и тут.
Итак, вернёмся к python библиотеке для работы с Telegram – telepot. На текущий момент самой последней её версий является 6.7. Устанавливаем её в виртуальное окружение python virtualenv:
pip install telepot
Самый простой вариант взаимодействия с Telegram ботом на Python выглядит следующим образом:
import telepot token = '123456' TelegramBot = telepot.Bot(token) print TelegramBot.getMe()
Переменной token присваиваем значение токена, полученного при создании бота через BotFather. В итоге после выполнения этих команд мы получим:
{u'username': u'PythonPlanetBot', u'first_name': u'Python Planet Bot', u'id': 199266571}
Поздравляю! Мы вызывали самый простой API запрос getMe, который возвращает информацию о боте: username, id, first_name.
Добавим нашего бота к себе в контакт-лист и пошлём ему первую стандартную команду /start
Выполняем код:
TelegramBot.getUpdates() [{u'message': {u'date': 1459927254, u'text': u'/start', u'from': {u'username': u'adilkhash', u'first_name': u'Adil', u'id': 31337}, u'message_id': 1, u'chat': {u'username': u'adilkhash', u'first_name': u'Adil', u'type': u'private', u'id': 7350}}, u'update_id': 649179764}]
Процесс общения с telegram ботом происходит по HTTPS; для передачи данных используется JSON. Метод getUpdates возвращает список/массив из объектов типа Update. Внутри Update находится объект Message. Для стандартного взаимодействия с ботом нас фактически интересует именно объект Message, у которого мы считываем атрибут text, хранящий в себе текст, переданный боту и объект chat, в котором лежит информация о пользователе, инициировавшем общение с нашим Telegram ботом. Также имеется параметр update_id, который служит в качестве offset параметра при вызове метода getUpdates. То есть update_id+1 вернёт все сообщения, поступившие после последнего update_id, при этом все предыдущие сообщения будут удалены.
TelegramBot.getUpdates(649179764+1) [{u'message': {u'date': 1459928527, u'text': u'hello bro', u'from': {u'username': u'adilkhash', u'first_name': u'Adil', u'id': 31337}, u'message_id': 13, u'chat': {u'username': u'adilkhash', u'first_name': u'Adil', u'type': u'private', u'id': 7350}}, u'update_id': 649179765}]
На этапе написания простейшего Telegram бота нам этих вызовов достаточно. Приступим к написанию Django приложения для обслуживания наших пользователей.
Простая функция парсинга RSS фида Planet Python выглядит вот так:
# -*- coding: utf8 -*- from xml.etree import cElementTree import requests def parse_planetpy_rss(): """Parses first 10 items from http://planetpython.org/rss20.xml """ response = requests.get('http://planetpython.org/rss20.xml') parsed_xml = cElementTree.fromstring(response.content) items = [] for node in parsed_xml.iter(): if node.tag == 'item': item = {} for item_node in list(node): if item_node.tag == 'title': item['title'] = item_node.text if item_node.tag == 'link': item['link'] = item_node.text items.append(item) return items[:10]
Здесь я использую python библиотеку requests для работы с HTTP в самом простейшем варианте без обработки ошибок. Django “вьюшка” выглядит следующим образом:
TOKEN = '' TelegramBot = telepot.Bot(TOKEN) def _display_help(): return render_to_string('help.md') def _display_planetpy_feed(): return render_to_string('feed.md', {'items': parse_planetpy_rss()}) class CommandReceiveView(View): def post(self, request, bot_token): if bot_token != TOKEN: return HttpResponseForbidden('Invalid token') commands = { '/start': _display_help, 'help': _display_help, 'feed': _display_planetpy_feed, } try: payload = json.loads(request.body.decode('utf-8')) except ValueError: return HttpResponseBadRequest('Invalid request body') else: chat_id = payload['message']['chat']['id'] cmd = payload['message'].get('text') # command func = commands.get(cmd.split()[0].lower()) if func: TelegramBot.sendMessage(chat_id, func(), parse_mode='Markdown') else: TelegramBot.sendMessage(chat_id, 'I do not understand you, Sir!') return JsonResponse({}, status=200) @method_decorator(csrf_exempt) def dispatch(self, request, *args, **kwargs): return super(CommandReceiveView, self).dispatch(request, *args, **kwargs)
CommandReceiveView ждёт POST запрос на себя, парсит его и отвечает исходя из заданной команды. Полноценное Django приложение можно найти по этой ссылке. Стоит отметить в коде использование ещё одного API вызова – sendMessage. Этот метод отправляет сообщение заданному пользователю, используя при этом chat_id и сам текст сообщения. Chat_id – это уникальный идентификатор чата между пользователем и ботом (его идентификатор есть в ответе на запрос getUpdates). У Telegram ботов есть одно ограничение, они не могут посылать сообщения пользователям, которые предварительно не инициировали общение с ним. По-видимому это сделано дабы избежать массового создания спам-ботов.
Я предполагаю, что вы уже клонировали мой репозиторий, настроили окружение и установили все необходимые зависимости: Django, requests, telepot. Если же вы не знаете как это сделать, то совсем скоро я напишу цикл статей о разработке веб-приложений на Python, включая разбор экосистемы: разработка, настройка, деплой. Если вам это интересно, то отпишитесь, пожалуйста, в комментариях к этой статье. Хочется получить обратную связь 🙂
Итак, веб-приложение на Django запущено. Как же начать тестировать бота? А всё очень просто – необходимо симулировать действия Telegram сервиса. Для этого нам понадобится HTTP клиент и тело запроса. В качестве HTTP клиента я часто использую Chrome плагин под названием Postman, а тело запроса мы возьмём напрямую из данных, полученных с помощью API вызова getUpdates.
После запуска runserver, URL на который необходимо посылать запрос выглядит следующим образом:
http://127.0.0.1:8000/planet/b…BOT_TOKEN/
где BOT_TOKEN – это токен нашего бота. Смотрим скриншот:
А давайте-ка отправим команду feed для получения списка новостей из Planet Python:
На скриншотах видно, что бот адекватно отреагировал на нашу команду вывести список последних 10 постов.
Следующим шагом является деплой нашего Django приложения на удалённый хост и последующий вызов метода setWebhook для передачи URL на который будет посылаться POST запрос от сервиса Telegram каждый раз при поступлении команд боту от пользователей. Об этом мы поговорим в следующей заметке.
? Присоединяйтесь к рассылке
Понравился контент? Пожалуйста, подпишись на рассылку.
Используемые источники:
- https://netology.ru/blog/prg-tg
- https://geekbrains.ru/posts/useful_tg_channels
- https://khashtamov.com/ru/create-telegram-bot-in-python/