133 канала и чата в Telegram для программистов

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.

Читать также

4325.jpg

Руководство: зачем маркетологу 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 — Чат для гиков.

Читать также

4850.jpg

Что веб-разработчику нужно знать о современном вебе

Каналы

Для программистов

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/

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий