Содержание

Лучшие каналы жанра «Карьера» для Telegram

Самые интересные вакансии для мидл и топ-менеджеров

Удалённая работа — Вакансии

Привет, фрилансер!
Тут все просто: в ленте канала для тебя всегда найдутся интересные заказы, главное — успевай на них откликаться :))

Твоя карьера взлетит, а работа станет мечтой.
Подпишись и я расскажу как.

Нормальные и понятные вакансии для редакторов, писателей, копирайтеров, контент-маркетологов, смм-специалистов на контент и ведение.

Топовый агрегатор вакансий и заданий для фрилансеров в Telegram! Получай только отборные и актуальные вакансии и задания прямо в мессенджере!

Кастинги и работа в Москве

Канал с вакансиями Дубая

Актуальные вакансии на удаленке, полезные материалы для фрилансеров и не только.

Вакансии, оплачиваемые стажировки, гранты и волонтерские проекты за рубежом.

Удалённая, работа, заходи, тебя не хватает!

Сотрудничество и реклама — @olga_kravic

Канал, где собраны лучшие стажировки, стипендии и гранты со всего интернета.

Площадка для поиска удалённой работы. РФ&СНГ Свежие вакансии и статьи про удалённую работу.

Топовые удаленные вакансии. https://remowork.ru/ Подписывайся! По вопросам рекламы и размещения вакансий — [email protected] Сейчас идёт рекламная кампания так что просмотров будет очень много

Свежие вакансии из digital и media с прямыми контактами работодателей

К карьерным звездам без терний.

Ищу_дизайнера – канал отборных дизайнерских вакансий и фриланса. Партнер крупного дизайнерского паблика на фейсбук «Ищу_дизайнера»

Лучшие вакансии от создателей ведущего Телеграм-канала о карьере «Your Career» @yourcareer

Канал известного ресурса «Вакансии для хороших людей» (МЕДИА)

Первый канал в русскоязычном телеграмме с объяснением всех плюсов и минусов вакансии и прямыми контактами работодателей. От создателя канала @bezaspera

Вакансии для маркетологов, пиарщиков, рекламщиков, digital-маркетологов и специалистов из смежных областей.

Карьерные гайды, лучшие вакансии в корпорациях, обзор индустрий и другой контент для акселерации вашей карьеры. По всем вопросам:

Работа в городе Казань

Вакансии в креативных индустриях: реклама, дизайн, медиа, ІТ и прочее. Украина, Киев.

Работа в Telegram: как и где найти вакансию мечты

Представьтесь — это элементарные правила приличия и деловой переписки.

Обращайтесь по имени, если оно было указано в вакансии.

Делите сообщения на абзацы, чтобы получатель мог глазами найти нужный фрагмент при перечитывании.

Не пытайтесь креативить и шутить. Лучше показать себя хорошим претендентом, чем плохим шутником.

Не переходите на «ты» и не используйте эмодзи. Хоть это и мессенджер, вы устраиваетесь на работу, а не обсуждаете выходные с другом.

Не нападайте на нанимателя. Не нужно быть навязчивым и писать сто сообщений за день. У работодателя есть и другие обязанности, после которых он сможет вам ответить.

Не пишите свою биографию. Коротко о главном: опыт, навыки, достижения.

Лучше прислать два-три сильных текста, чем 10 сырых. Никаких Word-файлов, если его не просят, только Google Docs или ссылки на опубликованные статьи.

Первое впечатление у работодателя складывается на основе ваших соцсетей, поэтому они должны отражать положительные качества:

  • сделайте профиль публичным, чтобы его могли просматривать не только ваши друзья;
  • будьте аккуратнее с репостами мемов и шуток на тему политики и религии, а лучше вообще воздержаться от публичного высказывания политической позиции;
  • на аватарке должна быть ваша фотография, а не картинка любимого персонажа из аниме.

Не отходите от поставленных требований, не нужно креативить, только если это не предусмотрено заданием.

Если вы не можете выполнить его — ищите другую вакансию. Лучше сразу признать поражение, чем тратить время работодателя и своё.

Если в вакансии есть тестовое задание — его нужно сразу отправить с откликом. Не нужно спрашивать «А тестовое задание обязательное? У меня в портфолио есть похожая работа». Да, обязательно.

Сопроводительное письмо

Пишите грамотно и лаконично. Один абзац — одна мысль.

Пишите то, о чём вас попросили. Подробности о сложном финансовом положении и тому подобное лучше не упоминать.

Не надо писать от любви к компании, если первый раз о ней услышали. Можете написать, что давно следите за её развитием, и чем можете помочь.

Не придумывайте причины, почему вы подходите. «Я часто смотрю телевизор, поэтому я идеальный кандидат на пост продюсера».

Если вы претендуете на удалённую вакансию, то работодатель может провести собеседование онлайн. Убедитесь, что в этот период вас не будут отвлекать.

Приведите себя в порядок, не нужно сидеть небритым в домашней одежде, если вы не проходите интервью в офисе.

Будьте готовы, что вас будут расспрашивать о вашем опыте и навыках. Если вы не можете назвать себя хорошим спикером — подготовьте тезисы, на основе которых вы сможете презентовать себя в лучшем свете.

Telegram-каналы для фриланса

Ещё один канал для тех, кто хочет найти работу в геймдеве, 3D и VFX. Вакансии разные, но в основном ищут аниматоров, концепт-художников и тех, кто работает в 3D, много предложений для программистов.

Подписаться

Здесь можно найти самую разнообразную работу. Ищут специалистов по лидогенерации, пишущих редакторов, разработчиков, специалистов по интернет-маркетингу, менеджеров по продажам, дизайнеров и других специалистов.

Подписаться

Один из крупнейших каналов для фрилансеров, в котором больше 200 000 участников. Разброс вакансий огромен, так что специалистам любой области имеет смысл подписаться. Есть работа и для новичков.

Подписаться

Здесь публикуется много небольших и простых заказов, которые отлично подойдут новичкам. Из минусов — на канале очень много спама и рекламы.

Подписаться

Большая часть вакансий канала связана с Digital. Кроме самих вакансий, размещают полезные посты о работе на фрилансе и поиске заработка через Telegram.

Подписаться

На канал подписано почти 25 000 человек. Размещают вакансии для редакторов, копирайтеров, маркетологов, менеджеров и разработчиков.

Подписаться

На канале можно найти самые разные вакансии, но большая часть объявлений посвящена работе в дизайне, креативе, маркетинге и рекламе.

Подписаться

Ищут копирайтеров, дизайнеров, аниматоров, фотографов и даже швей. Из интересного — много предложений связано с фрилансом и работой в других странах.

Подписаться

На канале простые и понятные объявления — информация разбита по пунктам, самое важное выделено. На понимание того, подходит ли вакансия, читатель потратит буквально две секунды.

Подписаться

Публикуют вакансии из разных областей. Ищут всех, начиная с догситтеров и заканчивая таргетологами.

Подписаться

Чаще всего здесь появляются вакансии для дизайнеров, копирайтеров и интернет-маркетологов. Публикуют не только вакансии, но и курсы — обычно дают промокод на скидку.

Подписаться

Каждый день на канале выходит 5-8 вакансий в разных сферах. Например, недавно на канале опубликовано объявление нью-йоркского музея «Метрополитен» — владельцы искали русскоговорящего специалиста для отдела образования.

Подписаться

Почти все объявления Web Freelance — это разовые проекты или удалённая работа. Чаще всего ищут программистов и дизайнеров, но попадаются и другие специальности. Так, недавно было опубликовано объявление для начинающих преподавателей английского языка.

Подписаться

Чаще всего на канале ищут SMM-специалистов и контент-менеджеров, но встречаются вакансии и для дизайнеров. Вакансии для новичков, оплата невысокая.

Подписаться

Как правильно искать работу в Telegram? — Офтоп на vc.

ru

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

{«id»:32479,»url»:»https:\/\/vc.ru\/flood\/32479-kak-pravilno-iskat-rabotu-v-telegram»,»title»:»\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 Telegram?»,»services»:{«facebook»:{«url»:»https:\/\/www.facebook.com\/sharer\/sharer. php?u=https:\/\/vc.ru\/flood\/32479-kak-pravilno-iskat-rabotu-v-telegram»,»short_name»:»FB»,»title»:»Facebook»,»width»:600,»height»:450},»vkontakte»:{«url»:»https:\/\/vk.com\/share.php?url=https:\/\/vc.ru\/flood\/32479-kak-pravilno-iskat-rabotu-v-telegram&title=\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 Telegram?»,»short_name»:»VK»,»title»:»\u0412\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u0435″,»width»:600,»height»:450},»twitter»:{«url»:»https:\/\/twitter.com\/intent\/tweet?url=https:\/\/vc.ru\/flood\/32479-kak-pravilno-iskat-rabotu-v-telegram&text=\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 Telegram?»,»short_name»:»TW»,»title»:»Twitter»,»width»:600,»height»:450},»telegram»:{«url»:»tg:\/\/msg_url?url=https:\/\/vc.ru\/flood\/32479-kak-pravilno-iskat-rabotu-v-telegram&text=\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 Telegram?»,»short_name»:»TG»,»title»:»Telegram»,»width»:600,»height»:450},»odnoklassniki»:{«url»:»http:\/\/connect. ok.ru\/dk?st.cmd=WidgetSharePreview&service=odnoklassniki&st.shareUrl=https:\/\/vc.ru\/flood\/32479-kak-pravilno-iskat-rabotu-v-telegram»,»short_name»:»OK»,»title»:»\u041e\u0434\u043d\u043e\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a\u0438″,»width»:600,»height»:450},»email»:{«url»:»mailto:?subject=\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 Telegram?&body=https:\/\/vc.ru\/flood\/32479-kak-pravilno-iskat-rabotu-v-telegram»,»short_name»:»Email»,»title»:»\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043f\u043e\u0447\u0442\u0443″,»width»:600,»height»:450}},»isFavorited»:false}

40 973

просмотров

Собрал для вас все активные каналы с вакансиями и написал несколько важных советов по оформлению резюме/вакансии. Для удобства все разбил по нишам.

Где искать вакансии?

Удаленка

Для тех, кто может в тексты

«Работа в медиа» — вакансии в медиа для журналистов, редакторов, ведущих, smm-специалистов, аналитиков.

Норм работа — нормальные и понятные вакансии для редакторов, писателей, копирайтеров, контент-маркетологов, смм-специалистов на контент и ведение.

Дизайнеры

Design Hunters — канал с вакансиями в сфере дизайна.

Artnagrada — конкурсы, премии и гранты для дизайнеров

Программисты и разработчики

Работа в Сколково — здесь публикуют вакансии резиденты Сколково. В основном требуются программисты и разработчики.

«Трактор на Джинни» — канал публикует только вакансии для программистов, желающих переехать в Европу или США.

JavaScript Jobs — канал вакансий программистов JavaScript.

Мой круг — канал со всеми новыми IT-вакансиями с «Моего круга»

GetIT Russia — серьезные IT-Вакансии в России с серьезными зарплатами.

Mobile Dev Jobs — чат, в котором публикуются вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т. д.

IT Hunters — вакансии для айтишников

pro.js — вакансии в JavaScript, NodeJS

DevOps Jobs — публикуют вакансии и запросы на поиск работы по направлению DevOps, Docker, CoreOS, Kubernetes и пр.

QA — вакансии и поиск работы в сфере quality assurance

Ru_Python — общение и вакансии по тематике python

Рекламщики

Marketing jobs — вакансии для маркетологов, пиарщиков, рекламщиков, digital-маркетологов и специалистов из смежных областей.

Веб-аналитики

Стажировки

Brain drain — вакансии, оплачиваемые стажировки, гранты и волонтерские проекты за рубежом.

New directions — стажировки, волонтёрства, гранты и стипендии.

Digital в целом

Digital Job — размещает интересные вакансии ведущих компаний.

Your Job — вакансии от создателей ведущего Телеграм-канала о карьере «Your Career»

«Карьера» The Blueprint — Знаменитая рубрика «Карьера» от издания Blueprint теперь в Telegram. Новости о карьерных изменениях в сфере моды, красоты, маркетинга и PR + вакансии.

Digital Human — Вакансии и резюме про digital, IT, маркетинг

Мы вам перезвоним — всегда свежие вакансии из IT, digital, tv, радио, прессы, SMM, PR, дизайна и архитектуры с прямыми контактами работодателей

NON-tech jobs in IT — вакансии в сферах геймдева, маркетинга, криптовалюты и product management`а.

Как правильно откликаться на вакансию

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

  • Пишите грамотно и уважительно относитесь к чужому времени. Из текста сразу должно быть понятно, кто вы, что умеете, какой опыт имеете и какую работу ищете.
  • Обязательно прикрепляйте свои работы, но только ссылками на Google Docs или сайты, где работы размещены. Никаких прикрепленных документов в Ворде!
  • Если вас просят откликнуться на конкретную почту конкретного сотрудника — откликайтесь только туда, не тормошите человека в Телеграме или Фейсбуке, не спрашивайте спустя сутки «НУ ЧТО, ВЫ МНЕ ОТВЕТИТЕ?»
  • Приведите в порядок ваши страницы в соцсетях — на них пойдут во вторую очередь. Уберите похабщину и «крымнаш».

Как эффективнее всего искать сотрудников?

Алгоритм очень прост: находите профильные чаты и каналы, и отправляете туда вакансию. Однако и тут некоторые спотыкаются и начинают утаивать информацию. Ни один хороший специалист вам не напишет, если в вакансии отсутствует:

  • Название должности и компании прямо в заголовке.
  • Сразу же вилка по зарплате. И да, это главное, ради чего ищут работу.
  • Блок с требованиями и условиями работы. Укажите формат работы — удаленка/офис.
  • Контакты для связи.

Удачи в поисках!

25 телеграм-каналов с вакансиями

Число подписчиков — 35 270

Проект Алены Владимирской «Антирабство». Вакансии и стажировки в разных сферах: от Mail.ru и Альфа-банка до торговых сетей. Часто встречаются и предложения в СМИ. На канале можно встретить и эксклюзив, и перепосты из других ресурсов, что для многих удобно — можно не бегать по разным каналам.


Число подписчиков — 24 553

Здесь можно найти вакансию копирайтера или в фармацевтической компании. Часто встречаются перепосты из других каналов. Есть аналогичный канал для жителей Петербурга @promopoiskspb.


Число подписчиков — 19 282

Вакансии от создателей телеграм-канала о карьере Your Career. Здесь много предложений в сфере диджитала, но есть также объявления о поиске юристов, специалистов по картам и стажировки для студентов.


Число подписчиков — 9 569

Ребята собирают в своем канале работу для маркетологов, редакторов, дизайнеров, SMM-специалистов, а также менеджеров по продажам и маркетологов.


Число подписчиков — 2 306

Здесь можно найти и стажировку в США, и работу для фрилансеров в зарубежном креативном агентстве, и переводчика, и продюсера BBC, и даже директора музея на Шпицбергене.


Число подписчиков — 12 611

Нормальные вакансии для редакторов, писателей, копирайтеров, контент-маркетологов, SMM-специалистов. Удобная навигация и редактура.


Число подписчиков — 12 225

Вакансии из диджитала и медиа с прямыми контактами работодателей. Авторы канала размещают и полезное чтиво: можно найти посты о том, как написать резюме без опыта работы и не бояться разговаривать по телефону.


Число подписчиков — 9 751

Отборные вакансии для дизайнеров, в основном в диджитале: веб-дизайн, графический дизайн, дизайн мобильных приложений и игр.


Число подписчиков — 5 823

Чтобы разместить вакансию или резюме, достаточно написать авторам канала. Они используют свой формат объявлений, из которого сразу понятно, что нужно делать, какие требования к кандидату и «что по деньгам».


Число подписчиков — 3 006

Вакансии в диджитале от одноименного агентства. Есть работа для контент-менеджеров, специалистов по продажам, таргетированой рекламе и других работников диджитал-сферы.


Число подписчиков — 2 778

Канал с вакансиями в рекламе, в IT и диджитале в России и за рубежом. Много объявлений о работе в разных агентствах с подробными описаниями.


Число подписчиков — 10 006

Канал Александры Жуковской из Mail Ru Group с вакансиями для журналистов, около трети из них — удаленка. Есть объявления о работе в глянце, интернет-проектах и на федеральных телеканалах.


Число подписчиков — 8 951

Телеграм-канал с вакансиями в медиа. Каждый день выходит от пяти до 15 предложений напрямую от работодателей. Все вакансии модерируются. Есть микрорадио создателя ресурса «Вакансии для хороших людей» Ирины Конторевой, а по четвергам — рубрика «Подзарядка» с прикладными советами по поиску работы. Про вакансии в Северной столице можно почитать в петебургском канале.


Число подписчиков — 2 555

Работа для людей, которые зарабатывают текстом: копирайтеров, журналистов, редакторов. Из последних вакансий — редактор для Альфа-банка, автор журнала «Кот Шредингера» и главред в Skillbox.


Число подписчиков — 1 236

Вакансии редакторов, журналистов, копирайтеров. Канал собирает объявления о поиске пишущих людей из соцсетей, сайтов и от пользователей Telegram.


Число подписчиков — 36 446

Вакансии с удаленной работой со всего Рунета. Здесь появляются объявления для редакторов, дизайнеров и разработчиков. У канала также есть чат, куда можно послать вакансию или резюме.


Число подписчиков — 7 881

Актуальные вакансии на удаленке и фриланс-проекты. Тексты публикуются полностью, не нужно никуда переходить, чтобы узнать детали и контакты.


Число подписчиков — 1 400

Вакансии по удаленной и проектной работе с одноименного сайта: есть объявления для копирайтеров, координаторов, SMM-менеджеров и менеджеров по продажам.


Число подписчиков — 8 663

Идеи для тех, кто хочет поехать на летнюю стажировку в Грецию, Чехию или Швейцарию, а также попробовать себя в роли волонтера на каникулах.


Число подписчиков — 7 693

Стажировки и волонтерские проекты и вакансии для молодых специалистов за рубежом. Можно поехать младшим специалистом в университет ООН в Токио или поучиться в брюссельской цирковой школе.


Число подписчиков — 7 507

Гранты, стипендии, обучение и стажировки за рубежом: исследования в Италии, MBA в Англии, летняя школа урбанистики в Польше и много других интересных возможностей.


Число подписчиков — 6 332

Вакансии для маркетологов, пиарщиков, рекламщиков и специалистов из смежных областей, в диджитале и офлайне, в России и за рубежом.


Число подписчиков — 3 383

Работа для преподавателей и менеджеров образовательных проектов. Речь идет не столько об учителях, сколько о специалистах разного профиля в образовательной сфере — от редактора тематического сайта до сотрудника отдела обучения крупной компании.


Число подписчиков — 2 953

Вакансии и возможности в сфере дизайна и искусства. Если мечтаете работать в музее или арт-галерее, вам сюда. Здесь можно также узнать о том, как подать заявку на грант, и о конкурсах для молодых художников.


Число подписчиков — 730

Вакансии в области финансов, инвестиций, консалтинга и IT — тут публикуют и объявления о днях карьеры в МГУ и стажировках для будущих финансистов, а также сообщения о поиске финансовых аналитиков, бухгалтеров, трейдеров и даже топ-менеджеров.

чаты в Telegram, группы в FB и другие ресурсы / Блог компании icanchoose.ru / Хабр

Схема с созданием резюме на одном сайте и ожиданием приглашений на собеседование уже не работает. Найти отличную вакансию помогут социальные сети, где роль резюме играет ваш профиль, а рекрутерами могут стать друзья. Например, в Facebook друзья могут отмечать вас под вакансиями, а в LinkedIn подтверждать ваши навыки.

1. Социальные сети

Граница между работой и жизнью стирается так быстро, что вы не успеваете замечать. Мы тоже. Если раньше мы советовали, как сделать профиль в соцсетях вменяемым и привлекательным для работодателей, то теперь утверждаем: ваша страница = ваше резюме. Используйте эту возможность, тем более скоро у Facebook появится функция отклика на вакансии прямо из социальной сети. Придется больше думать перед репостом шуток и мемчиков.

// Facebook

Ловите ресурс, где собраны 100+ групп, в которых рекрутеры постят вакансии. Там их хватайте и откликайтесь.

// Vkontakte

Дистанция, фриланс, удаленная работа: много задач для дизайнеров, копирайтеров, SMM;

Вакансии для хороших людей: московские вакансии в медиа;

Вакансии нефтяной отрасли: геологи, нефтяники, химики и вот это всё;

Работа для дизайнеров: макеты, скетчи, шрифты;

Работа в геймдеве: вакансии для художников, разработчиков, аниматоров

Staya: скромная группа с разными вакансиями от сервиса Staya

// LinkedIn

Если вы не хотите искать работу на FB или вообще связывать профессиональную деятельность с социальной сетью, пилите своё резюме на LinkedIn. Даже после блокировки он не потерял своей эффективности. Создайте резюме, а затем начинайте искать вакансии:

Digital HR: digital-вакансии и всё такое;

Вакансии в Москве и регионах России: огромное сообщество, где множество ваканcий;

SELL YOUR HEAD: ещё одна огромная группа;

Поиск работы: вакансии, резюме: и вот ещё;

Jobs in Moscow: вакансии для москвичей.

Найти их просто, вперед. Только во все сразу не добавляйтесь — будет выглядеть как крик души 🙂

2. Телеграм-каналы и чаты

Если у вас всё ещё нет телеграма, скорее установите: там много крутых стикеров, чатов и интересных каналов, на которые можно подписаться:

Трактор на Джине: вакансии для разработчиков, кодеров с переездом в Европу;

Web Freelance: фрилансеры и заказчики;

First Work: похожее сообщество, можно смело подписываться;

icanchoose: вакансии, карьерные советы и полезные ресурсы;

Вакансии и резюме из Digital: канал для digital-вакансий;

Digital Job: SMM, копирайтеры и так далее;

Норм работа: редакторы, копирайтеры, SMM;

HRity (Эйчарити): самые разные вакансии;

PR-работа: кэп, работа в сфере PR;

Your Career: постят вдохновляющие статьи и вакансии;

Antirabstvo: разные вакансии, те, что для студентов, отдельно подписываются;

Мой круг: IT-вакансии;

DigitalHR: digital и IT вакансии в большом количестве!

В чатах можно не только смотреть вакансии, но и делиться резюме! Напишите пару слов и прикрепите линк на резюме/файл. Например: «Ребята, привет! Вольюсь в команду разработчиков С++/ маркетологов/ копирайтеров. Вот линк на резюме, буду рад пообщаться: (ссылка на резюме)».

Telegram Job: живой чат с разными вакансиями и возможностью подписки на хэштэги;

JavaScript Jobs: обсуждения и вакансии в JS;

DevOps Jobs: Docker, CoreOS, Kubernetes и пр.;

Mobile Dev Jobs: вакансии в разработке приложений и много размещаемых резюме;

Python: общение по тематике, но и вакансии есть.

3. Конкретные люди

Лайфхак для тех, кто знает, в какую компанию хочет попасть и уверен, что обладает нужными навыками. Увидели вакансию где-то и не знаете, как к ней ловко подобраться? Добавьте HR-менеджера компании в друзья. Найти его можно так:

1. Переключите язык на Facebook на английский язык.
2. Ищите рекрутера или будущего руководителя по команде people who work at *название компании*).

Добавьтесь в друзья, представьтесь, спросите о вакансиях — будьте вежливы, добры и профессиональны.

4. Другие работные сайты

// icanchoose
Вакансии и стажировки в стартапах и крупных компаниях можно найти у нас. Здесь всегда бывает что-то дельное и за вашу судьбу в этих компаниях можно не переживать 🙂

// Grintern

Тысяча стажировок по самым разным направлениям. Минус — бесплатно откликаться можно только на 1 вакансию в неделю.

// Работа для хороших людей

Вакансии в сфере медиа. Неисчерпаемый ресурс для копирайтеров, редакторов, видеорежиссеров и творческих людей.

Как найти работу в Телеграмм курьером, оператором, другие вакансии

Специализированные ресурсы для поиска работы часто не дают эффективного результата. Работодатели все чаще размещают объявления о наличии свободных вакансий в социальных сетях и ищут персонал, подключая знакомых. Телеграмм не исключение. В мессенджере существует множество групп и каналов, где публикуются незамещенные должности. У каждого нанимателя свои требования, о которых они сразу указывают в декларировании. В случае их отсутствия отправляется стандартный набор: резюме, портфолио, ссылки на социальные сети и ссылка на тестовое задание (если оно было). Давайте рассмотрим, какие вакансии выкладывают в Telegram и где их искать.

Как найти работу курьером в Телеграмм

Чтобы быть в курсе всех вакансий, вы можете подписаться на рассылку объявлений. Для этого воспользуйтесь ботом @HelperHH_bot, где можно задать параметры подписки, а именно указать время и день недели, когда ему можно будет присылать вам оповещения. Существуют также каналы, где можно оставить о себе информацию, и если работодателю вы подойдете, он с вами свяжется. Данные излагайте вкратце, не нужно описывать всю свою жизнь, укажите только главные факты:

  • опыт работы;
  • навыки;
  • достижения.

Чтобы работать курьером, особые требования не нужны. Главное внимательность и ответственность. Ознакомиться с наличием свободных мест можно здесь:

  • Вакансии&Резюме – здесь публикуются вакантные должности, советы, как искать работу, а также есть возможность оставить свое резюме.
  • Вакансии и работа в Украине – чат, с помощью которого можно найти работу в Украине.
  • Telegram job – чат, где ежедневно появляется множество предложений.

При выборе работы курьером стоит быть предельно внимательным, чтобы не попасть в поле зрения мошенников. Почитайте отзывы о компании, изучите сферу ее деятельности, и только потом принимайте решение.

Как найти работу оператором в Телеграмм

Как и в предыдущем пункте, тем, кто ищет работу оператора нужно подписаться на каналы, которые занимаются публикацией вакантных мест или самостоятельно промониторить платформу и найти группы, где можно заявить о себе.

Должность оператора возможно встретить в таких направлениях как digital или IT. Вот несколько каналов для поиска:

  • Мы вам перезвоним – извещается о новых свободных рабочих местах в digital или медиа, где тут же указываются контакты работодателей.
  • Digital Human – здесь находятся вакансии и резюме из сферы digital, IT, маркетинг.

В каких каналах и группах можно искать работу

В Telegram зарегистрировано очень много групп, чатов и каналов, где пользователь может заняться поиском определенной профессии. В рейтинг наиболее популярных попали такие ресурсы:

Your Job

Создателями канала являются администраторы Your Career, которые приняли решение выкладывать вакантные должности отдельно в группе. У канала широкая специфика, здесь публикуются самые разные объявления. Юристы, аналитики, менеджеры и много других профессий. Также есть предложения стажировки для студентов.

Web Freelance

Здесь размещают вакансии из области IT. Также в канале подписчики могут попросить помощи у программистов, для этого они размещают объявление, в котором сообщают о проблеме. Если же вы подписались конкретно для поиска работы, можете изложить о себе информацию, рассказать об умениях и опыте в программировании и связаться с администратором.

Трактор на Джинне

Канал содержит информацию о вакансиях для программистов и разработчиков, которые желают или согласны отправиться в Европу. Тут публикуются такие вакантные должности как дата-сайентист или PHP-разработчик. Выехать можно в Лондон, Вильнюс, Копенгаген и многие другие европейские города.

Какие еще вакансии есть в Телеграмме

В мессенджере можно найти работу по любому профилю. Если вы журналист, тогда просмотрите канал Работа в медиа (@dddwork).

Вакансии редакторов, журналистов, копирайтеров собраны в каналах «Каталог работы для редактора» (@work_editor) Work for Writers (@work4writers).

Маркетологам, пиарщикам, рекламщикам будет полезно полистать страницы канала Marketing Jobs (@marketing_jobs).

Любители искусства и дизайнеры могут найти что-то для себя в «Работа в сфере искусства» (@workinart).

Для жителей Москвы создан специальный канал с незамещенными должностями: «Интересная работа в Москве» (@promopoisk). Здесь ищут от фармацевтов до копирайтеров.

О том, что требуются финансисты, бухгалтера, трейдеры, топ-менеджеры сообщается в FinExecutive (@finexecutive).

Поиск фотографов, моделей, стилистов, художников и дизайнеров осуществляется через @promoratebot.

Вакансии о футболе собраны в @jobinfootball, о музыкантах в @vacancy_for_musicians.

На какую зарплату стоит рассчитывать

Некоторые каналы уже указывают размер заработной платы, к примеру «Вакансии с зп выше 50 тысяч» (@well_paid_job). Точную сумму назвать невозможно, так как каждая работа оплачивается по разному, даже зарплата одинаковых должностей у разных работодателей будет отличаться.

Стоит отметить, что курьер будет зарабатывать порядком меньше, чем айтишник. Учитывается фактор сложности и профессионализм.

Jobs

Telegram означает Freedom и perfection . Он создан крошечной командой всемирно известных разработчиков, выбранных в многоуровневых конкурсах. Если вы хотите присоединиться к команде Telegram , ознакомьтесь с вариантами ниже.

Посетите канал Telegram Contests и наш @jobs_bot, чтобы узнать о текущих конкурсах и последних новостях.

Инженер-программист C / C ++

Обязанности: работает над специализированными низкоуровневыми механизмами хранения данных Telegram, распределенными по нескольким дата-центрам.

Желаемая квалификация: опыт работы над масштабируемыми проектами C / C ++ и / или сетевыми протоколами, опыт работы с Linux, высокие результаты в олимпиадах по программированию.

Как подать заявку: свяжитесь с @jobs_bot и заполните необходимую информацию. Бот также будет уведомлять вас, когда мы проводим соответствующие соревнования по программированию, что является самым быстрым и простым способом присоединиться к команде.

Разработчик голосовых и видеозвонков

Обязанности: постоянно измеряет и улучшает качество голосовых вызовов Telegram. Разработайте автоматизированные тесты для сравнения голосовых вызовов Telegram с конкурентами.

Желаемая квалификация: глубокое знание протоколов и кодеков VoIP, опыт работы с Android Java и / или iOS Swift.

Как подать заявку: свяжитесь с @jobs_bot и заполните необходимую информацию. Бот также будет уведомлять вас, когда мы проводим соответствующие соревнования по программированию, что является самым быстрым и простым способом присоединиться к команде.

Инженер-программист Android (камера, видео)

Обязанности: разрабатывает клиентские камеры и программное обеспечение для сжатия видео для приложений Telegram Android.

Желаемая квалификация: опыт разработки на Java для Android, упорство в достижении максимальной скорости и качества на самом широком спектре устройств Android.

Как подать заявку: свяжитесь с @jobs_bot и заполните необходимую информацию. Бот также будет уведомлять вас, когда мы проводим соответствующие соревнования по программированию, что является самым быстрым и простым способом присоединиться к команде.

Художник-график / аниматор

Обязанности: разработка анимации пользовательского интерфейса для мобильных приложений Telegram, создание анимированных персонажей.

Желаемая квалификация: навыков векторной иллюстрации, анимационного дизайна и дизайна анимированных персонажей.

Как подать заявку: свяжитесь с @jobs_bot и заполните необходимую информацию. Бот также будет уведомлять вас всякий раз, когда мы проводим соответствующие соревнования — это самый быстрый и простой способ присоединиться к команде.

Инженер центра обработки данных

Обязанности: сборка , установка в стойку и кабель европейской инфраструктуры Telegram, работа с поставщиками и представителями центров обработки данных, участие в операционных процедурах вместе с командой, работающей по всему миру, устранение неполадок и обслуживание серверов / дисковых массивов / сетевого оборудования, выполнение обязательств и своевременная доставка и снижение затрат эффективные полевые проекты.

Предпочтительная квалификация: многолетний опыт работы в области устранения неполадок и эксплуатации центров обработки данных, знание кабельной разводки, выходящее за рамки прокладки или прокладки кабелей, эффективная многозадачность, строгая преданность делу, способность работать в ЕС без спонсорства.

Как подать заявку: свяжитесь с @jobs_bot и заполните необходимую информацию.

Инженер по надежности на объекте

Обязанности: автоматизировать рутинные задачи, проактивно выявлять и решать потенциальные проблемы надежности, повышать отказоустойчивость инфраструктуры Telegram с несколькими центрами обработки данных.

Предпочтительная квалификация: опыт администрирования * nix-подобных систем, опыт разработки на C, Python или Perl; знание bash, сетевых протоколов и сетевого оборудования основных производителей.

Как подать заявку: свяжитесь с @jobs_bot и заполните необходимую информацию.

Разработчик Javascript

Обязанности : помощь в создании Telegram для Интернета.

Предпочтительная квалификация : опыт разработки быстрого и эффективного JS-кода.

Как подать заявку : свяжитесь с @jobs_bot и заполните необходимую информацию. Бот также будет уведомлять вас, когда мы проводим соответствующие соревнования по программированию, что является самым быстрым и простым способом присоединиться к команде.

Младший бухгалтер

Обязанности : ведение бухгалтерских книг и записей, обеспечение документации финансовых операций, управление платежными ведомостями, подготовка финансовых отчетов и отчетов (баланс, отчет о прибылях и убытках, движение денежных средств и аналитика).

Предпочтительная квалификация : высокий балл по GMAT, свободное владение английским языком на уровне носителя языка, понимание и практическое знание принципов бухгалтерского учета в соответствии с МСФО, опыт работы с программным обеспечением QuickBooks или Xero, высокая компьютерная грамотность и умелое использование Microsoft Excel.

Как подать заявку : свяжитесь с @jobs_bot и заполните необходимую информацию.

Младший юрисконсульт

Обязанности : составлять и оценивать все виды юридических документов и юридической корреспонденции, обеспечивать соблюдение применимого законодательства, активно проводить юридические исследования, следить за изменениями в законах и нормативных актах.

Предпочтительная квалификация : сильная юридическая подготовка в Великобритании / США, глубокие знания административного права и процедур, аналитические навыки, знакомство с правовыми рамками в нескольких юрисдикциях, отличные коммуникативные навыки со способностью ясно и кратко выражать идеи как устно и письменно.

Как подать заявку : свяжитесь с @jobs_bot и заполните необходимую информацию.

Помощник генерального директора

Обязанности : управление и ведение календаря генерального директора, бронирование и организация поездок, транспорта и проживания, управление образом жизни.

Предпочтительная квалификация : высокий IQ, свободное владение английским языком на уровне носителя языка, отличные устные и письменные коммуникативные навыки, точность и внимание к деталям, базовые финансовые навыки, осмотрительность, настойчивость.

Как подать заявку : свяжитесь с @jobs_bot и заполните необходимую информацию.

Инженер по мгновенному просмотру

Обязанности : улучшать существующие и создавать новые шаблоны мгновенного просмотра. Вознаграждение будет зависеть от объема работы, проделанной каждый месяц (например,грамм. 30 евро за уникальный шаблон и 10 евро за улучшенный существующий шаблон).

Предпочтительные квалификации : успешное участие в соревнованиях Telegram Instant View. Будут рассмотрены только участники, внесшие наибольший вклад в соревнования.

Как подать заявку : свяжитесь с @jobs_bot и заполните необходимую информацию.

Методы

channels.createChannel Создайте супергруппу / канал.
каналов. GetInactiveChannels Получить неактивные каналы и супергруппы
канала.deleteChannel Удалить канал / супергруппу
каналов.deleteHistory Удалить историю супергруппы
каналов.deleteMessages Удалить сообщения в канале / супергруппе
каналов.deleteUserHistory Удалить все сообщения, отправленные определенным пользователем в супергруппе
каналов.editAdmin Измените права администратора пользователя в супергруппе / канале.
каналов. Заблокировано Забанить / разблокировать / исключить пользователя в супергруппе / канале.
каналов.editCreator Передача права собственности на канал
каналов. Редактировать Местоположение Изменить местоположение геогруппы
канала. Редактировать Фото Изменить фото канала / супергруппы
каналов.editTitle Изменить имя канала / супергруппы
канала.exportMessageLink Получить ссылку и вставить информацию о сообщении в канал / супергруппу
channels.getAdminLog Получить журнал администратора канала / супергруппы
channels.getAdminedPublicChannels Получить каналы / супергруппы / геогруппы, в которых мы администрируем. Обычно вызывается, когда пользователь превышает предел для собственных общедоступных каналов / супергрупп / геогрупп, и пользователю предоставляется выбор удалить один из его каналов / супергрупп / геогрупп.
каналов. GetChannels Получить информацию о каналах / супергруппах
каналов. GetFullChannel Получить полную информацию о канале
channels.getGroupsForDiscussion Получите все группы, которые можно использовать как группы обсуждения.

Возвращенные унаследованные групповые чаты необходимо сначала обновить до супергрупп, прежде чем их можно будет установить в качестве дискуссионных групп.
Чтобы установить возвращенную супергруппу в качестве группы обсуждения, необходимо разрешить доступ к ее старым сообщениям с помощью каналов.togglePreHistoryHidden, во-первых.

channels.getMessages Получить сообщения канала / супергруппы
channels.getParticipant Получить информацию об участнике канала / супергруппы
channels.getParticipants Получить участников супергруппы / канала
каналов.inviteToChannel Пригласить пользователей в канал / супергруппу
каналов.joinChannel Присоединиться к каналу / супергруппе
канала.leaveChannel Покинуть канал / супергруппу
каналов. ЧитатьИстория Отметить историю канала / супергруппы как прочитанную
каналов. ReadMessageContents Пометить содержимое сообщения канала / супергруппы как прочитанное
каналов.setDiscussionGroup Свяжите группу с каналом как группу обсуждения для этого канала
каналов. НаборНаклейки Свяжите набор стикеров с супергруппой
канала.togglePreHistoryHidden Скрыть / показать историю сообщений для новых пользователей канала / супергруппы
каналов. ПереключитьПодпись Включение / отключение подписей сообщений в каналах
каналов.toggleSlowMode Включить медленный режим супергруппы: если этот параметр включен, пользователи смогут отправлять только одно сообщение каждые секунд секунд
messages.getStatsURL Возвращает URL со статистикой чата. В настоящее время этот метод можно использовать только для каналов

Как Telegram работает для компаний

С помощью мега-групп, каналов и чат-ботов, вот список функций, которые Telegram предлагает компаниям, и необходимые шаги для начала общения с клиентами и потенциальными клиентами.

Telegram — это приложение для обмена сообщениями, похожее на WhatsApp, но с гораздо большим количеством функций. Его разработчики считают это чем-то средним между приложением для обмена сообщениями и каналом электронной почты .

В этом посте мы хотим объяснить все те особенности, которые делают Telegram полноценным маркетинговым каналом для компаний .

Telegram для компаний: семь сценариев использования

Возможности Telegram для компаний

Telegram — это универсальное приложение с открытым исходным кодом, поэтому его можно настраивать с помощью API .Именно эта открытость позволяет компаниям формировать различных маркетинговых целей и задач:

Давайте углубимся в детали и рассмотрим наиболее ценные функциональные ресурсы, которые Telegram предлагает компаниям.

Большая степень гибкости

В отличие от WhatsApp Business, например, Telegram основан на облаке : это означает, что вы можете входить и просматривать чаты с различных устройств одновременно благодаря мгновенной синхронизации.

Есть еще одно фундаментальное различие между Telegram и Whatsapp: учетная запись Telegram не привязана к SIM-карте, что позволяет использовать приложение без смартфона. Связывая учетную запись с именем пользователя, Telegram позволяет подключаться с разных устройств, сохраняя историю сообщений нетронутой и обновляя на каждом устройстве.

Помимо работы с несколькими устройствами, Telegram также поддерживает нескольких учетных записей : вы можете управлять несколькими учетными записями одновременно через приложение, так что администратор имеет неограниченную свободу для перемещения между одной группой и другой, каждая из которых предназначена для другая цель.

Каналы и мегагруппы

WhatsApp и в этом случае отстает от Telegram: последний уже с некоторых пор позволяет отправлять однонаправленных сообщений , где только администратор может писать и доставлять контент.

С маркетинговой точки зрения это немалое преимущество: компания может создать среду, в которой она может отправлять свой план коммуникаций в режиме широковещательной передачи , давая пользователям возможность добровольно зарегистрировать через общую ссылку (мы ‘ объясню как позже).

Еще одна впечатляющая деталь: список подписчиков канала может видеть только администратор. Это способ сохранить конфиденциальность пользователя , гарантируя при этом, что подписчики могут читать все сообщения, ранее отправленные администратором.

Telegram также предлагает другой уровень агрегации: мега-группа , то есть возможность создания очень больших сообществ до 100000 пользователей / участников. Эта функция, кажется, подходит компаниям как перчатка, позволяя им быстро общаться с широкой аудиторией клиентов и потенциальных клиентов.

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

Емкость обмена контентом до 1,5 ГБ

Как и все другие приложения для обмена сообщениями, Telegram позволяет вам обмениваться файлами любого типа: mp4, pdf, изображениями, GIF и многим другим. Дело в том, что Telegram позволяет обмениваться файлами с максимум на 1,5 ГБ : порог настолько высок, что практически не имеет ограничений на совместное использование.

Не только это, потому что Telegram также предлагает возможность сжать отправленный файл , чтобы ускорить загрузку для отправителя и загрузку для получателя.

Ресурсы Telegram: список

База пользователей: 200 миллионов
Облако: ✔️
Учетная запись: пользователь
Профиль компании: двойной профиль
Максимальный размер файла: 1,5 ГБ
Статистика сообщений: ✔️ (благодаря интеграции с приложениями обмена сообщениями)
Чат-бот: ✔️
Вместимость группы: 100000
Платформы: iOS, Android, Desktop
Видеосообщения: ✔️
Наклейки: ✔️
Анимированные GIF-файлы: доступны с клавиатуры
Каналы: ✔️
Ссылка на подписку на канал: ✔️

Потенциал чат-ботов

Еще одним отличительным элементом Telegram является чат-бот : телеграмма, не являющаяся человеком. пользователь, который автоматически выполняет более или менее сложных действий на основе полученной команды (В виде HTTP-запроса).

Telegram имеет два типа ботов:

  • Автономный бот : автономное окно чата, в котором пользователь может отдавать команды. Примером может служить новостной бот Netflix, который сообщает нам, какие фильмы и сериалы будут выпущены в ближайшее время.
  • Inline Bot : вызывается из других окон чата (одиночного или группового) с помощью команды @namebot. Примером может служить бот @gif: набрав команду @gif keyword в окне чата, бот предлагает анимированные GIF-изображения, соответствующие введенному ключевому слову, взятые непосредственно с портала Giphy.

Знаете ли вы?

Согласно New York Times, Telegram запустит новую криптовалюту , которая будет называться Gram. Согласно источнику, он будет доступен примерно 200-300 миллионам пользователей по всему миру, которые смогут использовать его через приложение Telegram и цифровой кошелек для покупки товаров и услуг непосредственно в чатах, каналах, группах и ботах.

Что нужно для вывода вашей компании на Telegram

1.Скачать Telegram

  • Для Android
    Перейдите на страницу PlayStore и нажмите Установить или Получите , примите условия и дождитесь завершения операции. После установки на устройство все, что вам нужно сделать, это нажать Открыть (или значок Telegram на вашем смартфоне) и ввести свои данные.
  • Для iOS
    Перейдите на страницу AppStore и выполните те же действия, что и выше, для версии Android.
  • Для настольных ПК
    Как упоминалось ранее, вы также можете использовать Telegram на своем ПК, прямо из браузера или загрузив соответствующее настольное приложение; затем откройте только что загруженный файл и следуйте процедуре установки приложения.

2. Положитесь на приложения для обмена сообщениями

Компании, которые хотят использовать Telegram в маркетинговых и коммуникационных целях, имеют технологическую поддержку в MailUp, которая использует преимущества и расширяет потенциал приложения: оно называется приложениями для обмена сообщениями, и это канал который позволяет подключить Telegram (и Facebook Messenger) к платформе MailUp и профессионально настроить коммуникационную стратегию. Вкратце, приложения для обмена сообщениями позволяют компаниям:

  • Подключать ботов Telegram к своей платформе MailUp
  • Собирать подписчиков с помощью многоканальных форм
  • Настроить автоматические ответы
  • Используйте интуитивно понятный редактор для создания сообщений тексты, изображения, видео, аудиофайлы, PDF-файлы и внешние ссылки
  • Отправьте широковещательную рассылку сообщений немедленно или планируйте их с течением времени
  • Настройте повторяющиеся автоматические кампании
  • Анализируйте результаты в реальном времени

Мы советуем запросить бесплатную пробную версию платформы: у вас будет 30 дней, чтобы узнать, что приложения для обмена сообщениями могут сделать для вашей стратегии Telegram.

Почему вам следует использовать приложения для обмена сообщениями в маркетинге и как собирать контакты

3.

Подключите Telegram к приложениям обмена сообщениями

Для подключения Telegram к приложениям обмена сообщениями требуется всего нескольких простых шагов. . Они перечислены ниже:

  1. Войдите в Telegram и введите @BotFather (бот Telegram, отец всех ботов приложения)
  2. Выберите чат с BotFather
  3. В открывшемся диалоге нажмите кнопку Start
  4. Как предлагает BotFather, напишите / newbot в разговоре
  5. Напишите имя, которое вы хотите дать боту
  6. Скопируйте токен, сгенерированный ботом
  7. Войдите в MailUp и выберите следующие элементы: Messaging Apps > Каналы > Добавить каналы > Telegram > Connect
  8. Вставьте токен в специальное поле
  9. Вернитесь в Telegram и в чате с BotFather напишите / setuserpic , чтобы настроить профиль вашей компании
  10. Перетащите изображение логотипа вашей компании в поле разговора
  11. Вернитесь в MailUp и перейдите в Приложения для обмена сообщениями > Telegram > Настройки . Здесь вы определяете два основных автоматических сообщения: презентационное сообщение (запускаемое при каждой новой подписке на ваш канал) и ответ по умолчанию (для ответа всем пользователям, которые пишут вам стандартное сообщение).

Базовая конфигурация вашей учетной записи готова, и вы можете начать общение через Telegram.

В итоге

Наряду с другими платформами обмена мгновенными сообщениями, Telegram является и все чаще будет ключевым инструментом для диалогового маркетинга : тот набор методов, который позволяет брендам обращаться к клиентам и потенциальным клиентам в цифровых местах, где реальных разговоров между людьми состоится .

Мы надеемся, что эта статья помогла вам понять потенциал Telegram для компаний и необходимые шаги для применения теории на практике: достаточно учетной записи Telegram и приложения для обмена сообщениями MailUp , и вы можете запросить бесплатную пробную версию. на 30 дней.

Андреа Сервенти

Редактор

Я родился в 1986 году в Милане, где получил диплом по современной литературе и начал писать для интернет-газет, журналов и новостных телепрограмм.Перейдя на маркетинг и цифровой мир, я работаю редактором контента в MailUp: читаю, слушаю, собираю идеи и пишу о том, что такое электронный маркетинг и как его использовать в стратегических целях.

Вам понравилась эта статья? У нас есть для вас гораздо больше.

Подпишитесь сейчас, чтобы получать последние новости о маркетинге по электронной почте и SMS.

Введение в Telegram API. Проанализируйте свою историю разговоров на… | автор: Jiayu Yi

Программный анализ истории разговоров в Telegram

Telegram — это служба обмена мгновенными сообщениями, такая же, как WhatsApp, Facebook Messenger и WeChat.В последние годы он приобрел популярность по разным причинам: некоммерческий характер, кроссплатформенная поддержка, обещания безопасности¹ и открытые API.

В этом посте мы будем использовать Telethon, клиентскую библиотеку Python для Telegram API, чтобы подсчитать количество сообщений в каждом из наших чатов Telegram.

« Telegram имеет открытый API и бесплатный протокол для всех». — Домашняя страница Telegram

. Наиболее известным из API Telegram является его Bot API, API-интерфейс на основе HTTP, позволяющий разработчикам взаимодействовать с платформой ботов.Bot API позволяет разработчикам управлять ботами Telegram, например получать сообщения и отвечать другим пользователям.

Помимо Bot API, есть еще и Telegram API. Это API, используемый приложениями Telegram для всех ваших действий в Telegram. Вот некоторые из них: просмотр ваших чатов, отправка и получение сообщений, изменение отображаемого изображения или создание новых групп. Через Telegram API вы можете делать все, что вы можете делать в приложении Telegram программно.

Telegram API намного сложнее, чем Bot API.Вы можете получить доступ к Bot API через HTTP-запросы со стандартными полезными данными JSON, формы или строки запроса, в то время как API Telegram использует собственный настраиваемый формат полезной нагрузки и протокол шифрования.

Схема потока сервер-клиент MTProto

MTProto — это настраиваемая схема шифрования, которая поддерживает обещания Telegram по обеспечению безопасности. Это протокол прикладного уровня, который выполняет запись непосредственно в базовый транспортный поток, такой как TCP или UDP, а также HTTP. К счастью, при использовании клиентской библиотеки нам не нужно заниматься этим напрямую.С другой стороны, нам нужно понимать формат полезной нагрузки, чтобы выполнять вызовы API.

Type Language

API Telegram основан на RPC, поэтому взаимодействие с API включает отправку полезных данных, представляющих вызов функции и получение результата. Например, чтение содержимого беседы включает вызов функции messages.getMessage с необходимыми параметрами и получение в ответ messages.Messages .

Type Language, или TL, используется для представления типов и функций, используемых API.TL-схема — это набор доступных типов и функций. В MTProto конструкции TL будут сериализованы в двоичную форму перед внедрением в качестве полезной нагрузки сообщений MTProto, однако мы можем оставить это клиентской библиотеке, которую мы будем использовать.

Пример TL-схемы (сначала объявляются типы, затем функции с разделителем между ними):

 auth.sentCode # efed51d9 phone_registered: Bool phone_code_hash: string send_call_timeout: int is_password: Bool = auth.SentCode; auth .sentAppCode # e325edcf phone_registered: Bool phone_code_hash: string send_call_timeout: int is_password: Bool = auth.SentCode; --- функции --- auth.sendCode # 768d5f4d phone_number: string sms_type: int api_id: int api_hash: string = lang_code: string = lang. SentCode; 

Вызов функции TL и результат с использованием функций и типов из приведенной выше TL-схемы и эквивалентного двоичного представления (из официальной документации):

 (auth.sendCode "799567" 1 32 "test-hash" "en") 
=
(авт.sentCode
phone_registered: (boolFalse)
phone_code_hash: "2dc02d2cda9e615c84"
)

d16ff372 3939370b 33323139 37363534 00000001 00000020 73657409 61682d74 00006873 e77e812d
=
2215bcbd bc799737 63643212 32643230 39616463 35313665 00343863 e12b7901

TL-схема слои

Телеграммы API, является версионирование с использованием слоев TL-Schema; каждый слой имеет уникальную TL-схему. Веб-сайт Telegram содержит текущую TL-схему и предыдущие уровни по адресу https: // core.telegram.org/schema.

По крайней мере, кажется, что, хотя последний слой TL-схемы на веб-сайте Telegram — это уровень 23, на момент написания последний слой фактически уже является уровнем 71. Вместо этого вы можете найти последнюю TL-схему здесь.

Создание приложения Telegram

Вам необходимо получить api_id и api_hash для взаимодействия с Telegram API. Следуйте инструкциям из официальной документации здесь: https: //core.telegram.org / api / getting_api_id.

Вам нужно будет посетить https://my.telegram.org/ и войти в систему, указав свой номер телефона и код подтверждения, который будет отправлен в Telegram, и заполнить форму в разделе «Инструменты разработки API» с названием приложения и коротким имя. После этого вы можете найти свои api_id и api_hash в том же месте.

В качестве альтернативы в тех же инструкциях упоминается, что вы можете использовать образцы учетных данных, которые можно найти в исходных кодах Telegram для тестирования. Для удобства я буду использовать учетные данные, которые я нашел в исходном коде Telegram Desktop на GitHub в примере кода здесь.

Установка Telethon

Мы будем использовать Telethon для связи с Telegram API. Telethon — это клиентская библиотека Python 3 (что означает, что вам придется использовать Python 3) для API Telegram, который будет обрабатывать все задачи, связанные с протоколом, за нас, поэтому нам нужно только знать, какие типы использовать и какие функции использовать. вызов.

Вы можете установить Telethon с помощью pip :

 pip install telethon 

Используйте pip , соответствующий вашему интерпретатору Python 3; это может быть pip3 .(Случайно: недавно был выпущен Ubuntu 17.10, который использует Python 3 в качестве установки Python по умолчанию.)

Создание клиента

Прежде чем вы сможете начать взаимодействие с Telegram API, вам необходимо создать клиентский объект с вашим api_id и api_hash и подтвердите его своим номером телефона. Это похоже на вход в Telegram на новом устройстве; вы можете представить этот клиент как еще одно приложение Telegram.

Ниже приведен код для создания и аутентификации клиентского объекта, измененный из документации Telethon:

 из телемарафона импортировать TelegramClient 
из телемарафона.errors.rpc_errors_401 import SessionPasswordNeededError

# (1) Используйте здесь свои собственные значения
api_id = 17349
api_hash = '344583e45741c457fe1862106095a5eb'

phone = 'YOUR_NUMBER

' username = 'YOUR_NUMBER9_HERE' client = TelegramClient (username, api_id, api_hash)
client.connect ()

# Убедитесь, что вы авторизованы
, если не client.is_user_authorized ():
client.send_code_request (phone)
try:
client.sign_in (phone, input ('Введите код:'))
except SessionPasswordNeededError:
client.sign_in (password = input ('Password:'))

me = client.get_me ()
print (me)

Как упоминалось ранее, указанные выше api_id и api_hash взяты из исходного кода Telegram Desktop. Введите свой номер телефона в переменную phone .

Telethon создаст файл .session в своем рабочем каталоге, чтобы сохранить детали сеанса, точно так же, как вам не нужно повторно аутентифицироваться в приложениях Telegram каждый раз, когда вы закрываете и открываете их снова.Имя файла начинается с переменной username . Вам решать, хотите ли вы его изменить, если вы хотите работать с несколькими сеансами.

Если предыдущего сеанса не было, запуск этого кода приведет к отправке кода авторизации через Telegram. Если вы включили двухэтапную аутентификацию в своей учетной записи Telegram, вам также потребуется ввести свой пароль Telegram. После однократной аутентификации и сохранения файла .session вам не придется повторно проходить аутентификацию до истечения срока сеанса, даже если вы снова запустите сценарий.

Если клиент был создан и успешно аутентифицирован, объект, представляющий вас, должен быть напечатан на консоли. Он будет выглядеть примерно так (многоточие означает, что некоторый контент был пропущен):

 Пользователь (is_self = True… first_name = 'Jiayu', last_name = None, username = 'USERNAME', phone = 'PHONE_NUMBER'… 

Теперь вы можете использовать этот клиентский объект, чтобы начать делать запросы к Telegram API.

Проверка TL-схемы

Как упоминалось ранее, использование Telegram API включает вызов доступных функций в TL-схеме.В данном случае нас интересует функция messages.GetDialogs . Нам также необходимо обратить внимание на соответствующие типы в аргументах функции. Вот подмножество TL-схемы, которую мы будем использовать для этого запроса:

 messages.dialogs # 15ba6c40 dialogs: Vector  messages: Vector  chats: Vector  users: Vector  = messages.Dialogs; messages.dialogsSlice # 71e094f3 count: int dialogs: Vector  messages: Vector  chats: Vector  users: Vector  = messages. Диалоги; --- функции --- messages.getDialogs # 191ba9c5 flags: # exclude_pinned: flags.0? True offset_date: int offset_id: int offset_peer: InputPeer limit: int = messages.Dialogs; 

Его нелегко читать, но обратите внимание, что функция messages.getDialogs вернет messages.Dialogs , который является абстрактным типом для объекта messages.dialogs или messages.dialogsSlice , которые оба содержат векторы Dialog , Message , Chat и User .

Использование документации Telethon

К счастью, документация Telethon дает более подробную информацию о том, как мы можем вызвать эту функцию. Из https://lonamiwebs.github.io/Telethon/index.html, если вы введете getdialogs в поле поиска, вы увидите результат для метода под названием GetDialogsRequest (функции TL-Schema представлены * Запросить объектов в Telethon).

В документации для GetDialogsRequest указывается тип возвращаемого значения для метода, а также некоторые дополнительные сведения о параметрах. Кнопка «Копировать импорт в буфер обмена» особенно полезна, когда мы хотим использовать этот объект, как сейчас.

https://lonamiwebs.github.io/Telethon/methods/messages/get_dialogs.html

Функция messages.getDialogs , а также конструктор для GetDialogsRequest принимает аргумент offset_peer типа

70 InputP. В документации по GetDialogsRequest щелкните ссылку InputPeer , чтобы увидеть страницу с описанием конструкторов и методов, принимающих и возвращающих этот тип.

https://lonamiwebs.github.io/Telethon/types/input_peer.html

Поскольку мы хотим создать объект InputPeer для использования в качестве аргумента для нашего GetDialogsRequest , нас интересуют конструкторы для InputPeer . В этом случае мы будем использовать конструктор InputPeerEmpty . Щелкните еще раз на странице InputPeerEmpty и скопируйте его путь импорта, чтобы использовать его. Конструктор InputPeerEmpty не принимает аргументов.

Создание запроса

Вот наш готовый GetDialogsRequest и как получить его результат, передав его нашему авторизованному клиентскому объекту:

 из телемарафона.tl.functions.messages import GetDialogsRequest 
из telethon.tl.types import InputPeerEmpty

get_dialogs = GetDialogsRequest (
offset_date = None,
offset_id = 0,
offset_peer = InputPeerEmpty = 9,

9 лимит (), get_dialogs)
print (dialogs)

В моем случае я получил объект DialogsSlice , содержащий список диалогов, сообщений, чатов и пользователей, как мы и ожидали на основе TL-Schema:

 DialogsSlice (count = 204 , dialogs = […], messages = […], chats = […], users = […]) 

Получение DialogsSlice вместо Dialogs означает, что были возвращены не все мои диалоги, но счетчик Атрибут сообщает мне, сколько всего у меня диалогов.Если у вас меньше определенного количества разговоров, вместо этого вы можете получить объект Dialogs , и в этом случае были возвращены все ваши диалоги, а количество имеющихся у вас диалогов — это просто длина векторов.

Терминология

Терминология, используемая API Telegram, иногда может немного сбивать с толку, особенно из-за отсутствия информации, кроме определений типов. Что такое «диалоги», «сообщения», «чаты» и «пользователи»?

  • диалогов представляет разговоры из вашей истории разговоров
  • чаты представляют группы и каналы, соответствующие разговорам в вашей истории разговоров
  • сообщений содержит последнее сообщение, отправленное для каждого разговора, как вы видите в своем списке разговоров в вашем приложении Telegram
  • пользователей содержит отдельных пользователей, с которыми вы общаетесь один на один или которые были отправителем последнего сообщения в одну из ваших групп

Например, если моя история чата был этот снимок экрана, который я сделал из приложения Telegram в Play Store:

диалогов будет содержать разговоры на снимке экрана: Old Pirates, Press Room, Monika, Jaina…

chats будет содержать записи для Old Pirates, Press Фабрика комнат и мемов.

сообщений будут содержать сообщения «Все на борт!» из «Старых пиратов», «Вау, хорошее упоминание!» из пресс-центра, сообщение, представляющее отправленное фото Монике, сообщение, представляющее ответ Джайны, и так далее.

пользователей будет содержать запись для Эшли, так как она отправила последнее сообщение пресс-центру, Монике, Джайне, Кейт и Уинстону с тех пор, как он отправил последнее сообщение на фабрику мемов.

(Я еще не работал с секретными чатами через Telegram API, поэтому не знаю, как они обрабатываются.)

Подсчет сообщений

Наша цель — подсчитать количество сообщений в каждом диалоге. Чтобы получить количество сообщений в беседе, мы можем использовать функцию messages.getHistory из TL-Schema:

 messages.getHistory # afa92846 peer: InputPeer offset_id: int offset_date: date add_offset: int limit: int max_id: int min_id: int = messages.Messages 

Следуя тому же процессу, что и ранее с messages. getDialogs , мы можем решить, как вызвать это с помощью Telethon, используя GetHistoryRequest .Это вернет либо объект Messages , либо MessagesSlice , который либо содержит атрибут count , сообщающий нам, сколько сообщений в разговоре, либо все сообщения в разговоре, чтобы мы могли просто подсчитать сообщения, которые он содержит.

Однако сначала нам нужно построить правильный InputPeer для нашего GetHistoryRequest . На этот раз мы используем InputPeerEmpty , поскольку мы хотим получить историю сообщений для определенного разговора.Вместо этого мы должны использовать конструктор InputPeerUser , InputPeerChat или InputPeerChannel в зависимости от характера диалога.

Управление данными ответа

Чтобы подсчитать количество сообщений в каждом из наших разговоров, нам нужно будет создать GetHistoryRequest для этого разговора с соответствующим InputPeer для этого разговора.

Все соответствующие конструкторы InputPeer принимают одинаковые параметры id и access_hash , но в зависимости от того, является ли беседа индивидуальным чатом, группой или каналом, эти значения находятся в разных местах в GetDialogsRequest response:

  • dialogs : список диалогов, в которых мы хотим подсчитать сообщения, и содержит значение однорангового узла с типом и id однорангового узла, соответствующего этому разговору, но не access_hash .
  • чаты : содержит id , access_hash и заголовки для наших групп и каналов.
  • users : содержит id , access_hash и имя для наших индивидуальных чатов.

В псевдокоде у нас есть:

 пусть counts будет отображением разговоров на количество сообщений для каждого диалога в диалогах: 
, если dialog. peer является каналом:
channel = соответствующий объект в чатах
name = channel.title
id = channel.id
access_hash = channel.access_hash
peer = InputPeerChannel (id, access_hash)
иначе, если dialog.peer является группой:
group = соответствующий объект в чатах
name = group.title
id = group. id
peer = InputPeerChat (id)
иначе, если dialog.peer является пользователем:
user = соответствующий объект в пользователях
name = user.first_name
id = user.id
access_hash = user.access_hash
peer = InputPeerUser (id, access_hash) history = история сообщений для однорангового узла
count = количество сообщений в истории counts [name] = count

Преобразование в код Python (обратите внимание, что диалогов , чатов и пользователей выше являются членами результата нашего GetDialogsRequest , который также называется диалогами ):

 counts = {} 

# создать словарь идентификаторов пользователей и чатов
users = {}
chats = {}

для u в диалогах. users:
users [u.id] = u

для c в dialogs.chats:
chats [c.id] = c

для d в dialogs.dialogs:
peer = d.peer
if isinstance (peer, PeerChannel):
id = peer.channel_id
channel = chats [id]
access_hash = channel.access_hash
name = channel.title

input_peer = InputPeerChannel (id, access_hash)
elif isinstance (peer,
elif isinstance (peer,
elif isinstance) peer.chat_id
group = chats [id]
name = group.title

input_peer = InputPeerChat (id)
elif isinstance (peer, PeerUser):
id = peer.user_id
user = users [id]
access_hash = user.access_hash
name = user.first_name

input_peer = InputPeerUser (id, access_hash)
else:
continue

get input_history = GetHistory_Request (
peer) ,
offset_date = None,
add_offset = 0,
limit = 1,
max_id = 0,
min_id = 0,
)

history = client (get_history)
if isinstance (history, Messages):
count = len ( history. messages)
else:
count = history.count

counts [name] = count

print (counts)

Наш объект counts представляет собой словарь имен чатов для количества сообщений. Мы можем отсортировать и распечатать его, чтобы увидеть наши самые популярные разговоры:

 sorted_counts = sorted (counts.items (), key = lambda x: x [1], reverse = True) 
для имени, количество в sorted_counts:
print ( '{}: {}'. format (name, count))

Пример вывода:

 Групповой чат 1: 10000 
Групповой чат 2: 3003
Канал 1: 2000
Чат 1: 1500
Чат 2: 300

Библиотека magic

Telethon имеет несколько вспомогательных функций для упрощения общих операций.На самом деле мы могли бы сделать то же самое с двумя из этих вспомогательных методов, client.get_dialogs () и client.get_message_history () , вместо этого:

 из telethon.tl.types import User 

_, entity = client. get_dialogs (limit = 30)

counts = []
для e в сущностях:
if isinstance (e, User):
name = e.first_name
else:
name = e.title

count, _, _ = client .get_message_history (e, limit = 1)
counts.append ((name, count))

message_counts.sort (key = lambda x: x [1], reverse = True)
для name, count in counts:
print ('{}: {}'. format (name, count))

Однако я чувствовал, что Лучше всего сначала вызвать методы API Telegram напрямую, тем более что не существует вспомогательного метода для всего. Тем не менее, есть некоторые вещи, которые намного проще выполнить с помощью вспомогательных методов, например, как мы аутентифицировали нашего клиента в начале, или такие действия, как загрузка файлов, которые в противном случае были бы утомительными.

Полный код этого примера можно найти в виде Gist здесь: https://gist.github.com/yi-jiayu/7b34260cfbfa6cbc2b4464edd41def42

С Telegram API можно сделать гораздо больше, особенно с точки зрения аналитики. . Я начал заниматься этим после того, как подумал об одном из моих старых проектов, в котором я пытался создать визуализацию данных из экспортированных историй чатов WhatsApp: https://github.com/yi-jiayu/chat-analytics.

Используя регулярное выражение для анализа истории чата, отправляемого по электронной почте, я мог сгенерировать диаграмму, аналогичную диаграмме репозитория перфокарт GitHub, показывающую, в какое время недели чат был наиболее активен:

Однако с помощью функции «Электронный чат» экспорт был довольно хакерским, и вам нужно было вручную экспортировать историю разговоров для каждого чата, и она устареет, как только вы получите новое сообщение.Я не стал продвигать проект дальше, но всегда думал, что другие идеи можно почерпнуть из историй чатов.

Благодаря программному доступу к истории чатов с помощью чатов Telegram можно делать гораздо больше. Такие методы, как messages.search , могут быть мне исключительно полезны. Возможно, динамически генерировать статистику по разговорам, которые достигают пика и затихают, или которые постоянно активны, или найти ваши любимые смайлы или наиболее распространенные n-граммы? Небесный предел (или предел скорости API, в зависимости от того, что ниже).

Обновления

(2017–10–25 09:45 SGT) Измененный подсчет сообщений для пропуска неожиданных диалогов

Боты Deepfake в Telegram значительно упрощают работу по созданию поддельных обнаженных людей

Исследователи обнаружили в приложении для обмена сообщениями Telegram «экосистему дипфейков», в основе которой лежат боты, которые по запросу генерируют поддельные обнаженные изображения. Пользователи, взаимодействующие с этими ботами, говорят, что в основном создают обнаженных женщин, которых они знают, используя изображения, взятые из социальных сетей, которыми они затем делятся и обмениваются друг с другом в различных каналах Telegram.

Расследование проводится охранной фирмой Sensity, которая занимается тем, что она называет «визуальным анализом угроз», в частности распространением дипфейков. Исследователи Sensity обнаружили, что до июля 2020 года было сгенерировано и опубликовано более 100 000 изображений в общедоступных каналах Telegram (это означает, что общее количество сгенерированных изображений, включая те, которые никогда не передавались, и созданные с июля, намного выше). По словам Sensity, большинство пользователей этих каналов, примерно 70 процентов, из России и соседних стран. The Verge смогла подтвердить, что многие каналы, исследованные компанией, все еще активны.

Целями ботов по всей видимости являются несовершеннолетние дети

Ботов можно использовать бесплатно, но они создают фальшивую обнаженную натуру с водяными знаками или только частично. Затем пользователи могут заплатить комиссию в размере нескольких центов, чтобы полностью «раскрыть» изображения. Один «тариф для новичков» взимает с пользователей 100 рублей (около 1,28 доллара США) за создание 100 поддельных обнаженных изображений без водяных знаков в течение семи дней.Sensity заявляет, что «ограниченное количество» созданных ботами изображений содержит объекты «несовершеннолетних».

И The Verge, и Sensity связались с Telegram, чтобы спросить, почему они разрешают этот контент в своем приложении, но до сих пор не получили ответов. Sensity сообщает, что также связалась с соответствующими правоохранительными органами.

В ходе опроса, проведенного на одном из основных каналов обмена дипфейками обнаженной натуры (изначально размещенных на русском и английском языках), большинство пользователей заявили, что хотят создавать изображения женщин, которых они знают в «реальной жизни».” Изображение: Sensity

Программное обеспечение, используемое для создания этих изображений, известно как DeepNude. Впервые он появился в Интернете в июне прошлого года, но его создатель закрыл свой веб-сайт через несколько часов после того, как он получил освещение в основной прессе, заявив, что «вероятность того, что люди будут злоупотреблять им, слишком высока». Однако программное обеспечение продолжало распространяться по бэкканалам, и Sensity заявляет, что DeepNude «с тех пор подвергся обратной инженерии, и его можно найти в расширенных формах в репозиториях с открытым исходным кодом и на торрент-сайтах.«Сейчас он используется для работы ботов Telegram, которые автоматически обрабатывают платежи, чтобы приносить доход своим создателям.

DeepNude использует технику искусственного интеллекта, известную как генеративные состязательные сети или GAN, для создания поддельных изображений обнаженной натуры, в результате чего изображения различаются по качеству. Большинство из них явно поддельные, с размазанной или пиксельной плотью, но некоторые легко могут быть приняты за настоящие фотографии.

Боты Telegram делают создание фальшивых обнаженных изображений таким же простым, как отправка картинки

Еще до появления Photoshop люди без согласия создавали фальшивые изображения обнаженных женщин.В настоящее время существует множество форумов и веб-сайтов, посвященных этой деятельности с использованием инструментов, не связанных с искусственным интеллектом, где пользователи делятся обнаженными фотографиями как знаменитостей, так и людей, которых они знают. Но дипфейки привели к более быстрой генерации более реалистичных изображений. Теперь автоматизация этого процесса с помощью ботов Telegram позволяет создавать поддельные обнаженные изображения так же просто, как отправлять и получать изображения.

«Ключевым отличием является доступность этой технологии», — сказал The Verge генеральный директор Sensity и соавтор отчета Джорджио Патрини.«Важно отметить, что другие версии ядра ИИ этого бота, обработки и синтеза изображений, свободно доступны в репозиториях кода в Интернете. Но вам нужно быть программистом и иметь некоторое представление о компьютерном зрении, чтобы заставить их работать, помимо мощного оборудования. Прямо сейчас все это не имеет значения, так как этим занимается бот, встроенный в приложение для обмена сообщениями ».

отчет SENSITY говорит, что это «разумно предположить», что большинство людей, использующих эти боты «в первую очередь заинтересованы в потреблении deepfake порнографии» (который по-прежнему популярной категории на порносайты).Но эти изображения и видео также могут быть использованы для вымогательства, шантажа, преследования и многого другого. Было зарегистрировано несколько задокументированных случаев, когда женщины становились жертвами использования искусственного интеллекта в обнаженном виде, и вполне возможно, что некоторые из тех, кто создает обнаженные изображения с помощью ботов в Telegram, делают это, руководствуясь этими мотивами.

«Унизительные поддельные видео и фотографии каждого из нас могут испортить нашу репутацию»

Патрини сообщил The Verge , что исследователи Sensity не видели прямых доказательств того, что творения бота использовались для этих целей, но заявили, что компания считает, что это происходит.Он добавил, что, хотя политическая угроза дипфейков была «просчитана» («с точки зрения злоумышленников, проще и дешевле прибегнуть к фотошопу изображений и получить аналогичный эффект для распространения дезинформации с меньшими усилиями»), это ясно, что технология представляет «серьезную угрозу личной репутации и безопасности».

Использование FastAPI для получения обновлений с GitHub до Telegram

Независимо от того, начинающий ли вы разработчик или опытный инженер-программист, вы, вероятно, использовали GitHub, платформу, на которой люди размещают исходный код своих проектов, вносят свой вклад в другие проекты. разработчикам и разрабатывать программное обеспечение с открытым исходным кодом.

По сути, GitHub стал де-факто платформой, где вы найдете широкий спектр программного обеспечения с открытым исходным кодом и связанных проектов. Он имеет множество функций и открытый API для разработки приложений, которые будут подключены к GitHub.

Telegram — это быстрая и расширяемая платформа обмена сообщениями, и одним из ее основных преимуществ являются чат-боты. Чат-боты легко программируются, имеют простой HTTP API для работы и просты в управлении. И у большинства языков есть оболочки для использования Telegram Bot API.

В этой статье мы создадим бота Telegram, который будет получать обновления из репозитория GitHub с помощью веб-перехватчиков Python и GitHub. Мы будем использовать FastAPI на стороне сервера и HTTP API Telegram для отправки сообщений.

Требования

  • Python, установленный на вашем компьютере для создания сервера.
  • Аккаунт Telegram
  • Бот для Telegram, о котором мы поговорим в следующих разделах.

Настройка среды разработки Python

Прежде чем мы начнем, мы создадим виртуальную среду Python для чистой настройки.

Это пакеты, которые нам понадобятся для сборки проекта:

  • FastAPI в качестве серверной инфраструктуры
  • HTTPX для асинхронных HTTP-запросов для связи с Telegram API.
  • Uvicorn для сервера
  • Pyngrok для туннелирования нашего локального сервера

Готовы? Начнем с настройки среды. Запишем весь код в файл main.py :

 $ мкдир фастапи-тг
$ cd fastapi-tg
$ python3 -m venv venv
$ source venv / bin / activate # Для Linux и Mac
$ venv \ Scripts \ activate # Для Windows
(venv) $ pip установить fastapi uvicorn pyngrok httpx
 

Получение учетных данных бота из Telegram

Для того, чтобы сообщения отправлялись и принимались нами, нам необходимо что-то программируемое.Здесь на помощь приходят боты Telegram. Боты — это программируемые чат-боты для платформы обмена сообщениями Telegram.

Телеграмм-бот будет иметь BOT_TOKEN , который является уникальным идентификатором бота. Чтобы создать бота для Telegram, нам нужно получить BOT_TOKEN . Для этого мы поговорим с другим ботом в Telegram, BotFather.

Мы можем создать нового бота, введя команду / newbot в BotFather. Нам также нужно ввести имя и отображаемое имя для бота.

После выполнения этих действий мы получим BOT_TOKEN . Как только вы его получите, установите его как переменные среды в terminal / cmd , что мы сделаем к концу этого раздела.

Теперь запустите своего бота, выполнив команду / start .

После того, как мы успешно создали бота Telegram, следующим шагом будет получение CHAT_ID , который является уникальным идентификатором для пользователя Telegram, и он есть у каждого пользователя Telegram.

Чтобы получить CHAT_ID , откройте чат с Json Dump Bot в Telegram. Сама команда / start предоставит вам объект JSON в тексте. Это будет выглядеть примерно так:

 {
  update_id: 143931094,
  "сообщение": {
    "message_id": 155844,
    "из": {
      "id": 123456789, // это Chat_ID пользователя телеграммы
      "is_bot": ложь,
      "first_name": "<имя>",
      "имя пользователя": "<имя пользователя>"
    },
    "чат": {
      "id": 123456789, // это Chat_ID пользователя телеграммы
      "first_name": "<имя>",
      "имя пользователя": "<имя пользователя>",
      "тип": "частный"
    },
    «дата»: 1575035172,
    "текст": "/ начало",
    "сущности": [
      {
        "смещение": 0,
        «длина»: 6,
        "тип": "бот_команда"
      }
    ]
  }
}
 

Мы можем получить CHAT_ID из ключа id .Когда у нас есть TOKEN и CHAT_ID , нам нужно добавить их как переменные среды в наш локальный сеанс.

В терминале / командной строке выполните следующие команды:

 # для linux / mac
$ export TOKEN = 
$ export CHAT_ID = 

# для windows
$ set TOKEN = 
$ set CHAT_ID = 
 

После того, как вы загрузили переменные среды, давайте напишем наш сервер

Создание сервера с FastAPI

Начнем с «Hello World!» конечная точка с FastAPI. FastAPI — это относительно новый веб-фреймворк для Python, который за последние несколько месяцев приобрел довольно большую популярность.

Он поддерживает асинхронные операции и основан на подсказках типов Python и OpenAPI, который является спецификацией для API. Мы также получаем документацию на конечных точках / docs и / redoc .

Давайте создадим простую конечную точку «Hello World», которая возвращает имя , которое передается как параметр URL:

 # main.py

из fastapi импорт FastAPI

app = FastAPI ()

@приложение.получить ("/ {имя}")
async def helloname (имя: str):
    "" "
    Возвращает привет пользователю с волнообразным эмодзи
    "" "
    return f "Привет, {имя} 👋"
 

Обратите внимание, что это простое приложение «Hello World» с FastAPI. Здесь мы указываем конечную точку как /. У этой конечной точки есть параметр URL, который мы указали как , имя .

Для запуска сервера мы будем использовать Uvicorn, сервер ASGI (интерфейс асинхронного шлюза сервера).

Выполните следующую команду в терминале, чтобы запустить сервер:

 $ uvicorn main: app --reload --port 9000
 

Это запустит наш сервер FastAPI на порту 9000 .Если мы перейдем к http: // localhost: 9000 / docs , мы сможем найти автоматически созданные интерактивные документы Swagger.

Если мы перейдем по адресу http: // localhost: 9000 / redoc , мы увидим больше автоматически сгенерированных документов с повторением.

Если мы попытаемся получить конечную точку с помощью curl или Httpie, это будет результат:

Теперь напишем наш сервер для приема веб-перехватчиков и отправки сообщений. Наш сервер будет выполнять следующие задачи:

  • Получение веб-перехватчиков от GitHub
  • Обработка полезной нагрузки веб-перехватчика и преобразование в сообщения
  • Отправить сообщение пользователю в Telegram

Получение веб-перехватчиков от GitHub

Webhooks — это полезная нагрузка и информация, отправляемая сервером другому приложению, если произошло действие. Обычно полезные данные веб-перехватчика находятся в формате JSON.

GitHub доставляет веб-перехватчик по указанному URL-адресу, если в репозитории произошло действие. Мы напишем наш сервер, чтобы он получал эти перехватчики и обрабатывал их, а в следующих разделах добавим к серверу дополнительные функции.

Для простоты мы будем обрабатывать только события star и pull_request GitHub. Событие star запускается, когда репозиторий помечается звездочкой, а событие pull_request запускается при открытии или закрытии запроса на вытягивание.Вы можете узнать больше о запросах на вытягивание GitHub здесь.

 # main.py
из fastapi import FastAPI, Request
импорт ОС

app = FastAPI ()

TOKEN = os.getenv ("TOKEN") # API-ключ Telegram Bot
CHAT_ID = os.getenv ("CHAT_ID") # ID чата Telegram

async def sendTgMessage ():
# СДЕЛАТЬ

@ app.post ("/ хук")
async def recWebHook (req: Request):
    "" "
    Получите Webhook и обработайте полезную нагрузку Webhook, чтобы получить соответствующие данные
    Обратитесь к https://developer. github.com/webhooks/event-payloads для всех событий и полезных данных GitHub Webhook.
    "" "
    body = await req.json ()
    event = req.headers.get («X-Github-Event»)
    if event == "star": # проверить, помечено ли событие звездой
        nos_stars = body \ ["репозиторий" \] ["количество звездочетов"]
        starrer_username = body \ ["отправитель" \] ["логин"]
        repo_url = body \ ["репозиторий" \] ["html_url"]
        repo_name = body \ ["репозиторий" \] ["имя"]
        message = f "{starrer_username} отметил \ [{repo_name} \] ({repo_url}). \ n \ n Общее количество звезд: {nos_stars}"
        ждите sendTgMessage (сообщение)
    elif event == "pull_request": # проверяем, является ли событие запросом на перенос
        pr_number = body ["число"]
        if body \ ["pull_request" \] ["merged"] == True:
            pr_action = "объединено"
        pr_action = body ["действие"]
        pr_title = body \ ["pull_request" \] ["title"]
        pr_desc = body \ ["pull_request" \] ["body"]
        pr_login = body \ ["отправитель" \] ["логин"]
        pr_login_url = body \ ["отправитель" \] ["html_url"]
        pr_url = body \ ["pull_request" \] ["html_url"]
        message = f "Запрос на получение (\ [{pr_number} \] ({pr_url})) {pr_action} от \ [{pr_login} \] ({pr_login_url}). \ n \ n Заголовок: * {pr_title} * \ n \ n Описание: ** {pr_desc} ** "
        ждите sendTgMessage (сообщение)
 

В этом коде мы написали конечную точку / hook для получения веб-перехватчика от GitHub и обработки веб-перехватчика для сообщения, которое будет отправлено через Telegram. Затем мы получим полезную нагрузку веб-перехватчика и его заголовки с классом Request FastAPI.

Сначала проверим, что это за действие. Если это событие, отмеченное звездочкой или запрос на перенос, мы будем делать сообщения для конкретного события.Мы получаем нужные нам данные из тела JSON. JSON анализируется в словаре Python, поэтому мы будем использовать ключи словаря в качестве индексов и извлекать значения для этих ключей. Вы также можете использовать метод словарей get () , чтобы сделать то же самое.

Для звездного события мы берем текущее количество звездочек, имя пользователя GitHub человека, который поставил репозиторий звездочкой, и URL-адрес репозитория. А для запросов на вытягивание мы также получаем заголовок и тело запроса на вытягивание, а также проверяем, объединены ли запросы на вытягивание.

Таким образом, мы можем распространить на многие другие события, такие как проблемы и обзоры, и почти все они имеют схожую структуру. Теперь мы напишем метод sendTgMessage () для отправки сгенерированного изображения в Telegram.

Отправка сообщений в Telegram

Telegram имеет мощный бот API. Для этого существует множество оболочек, но в этой записи блога мы будем использовать HTTP API для асинхронной отправки сообщения через созданного нами выше бота.

 # main.py
импортировать httpx

async def sendTgMessage (сообщение: str):
    "" "
    Отправляет сообщение в Telegram с помощью Telegram BOT API
    "" "
    tg_msg = {"chat_id": CHAT_ID, "text": message, "parse_mode": "Markdown"}
    API_URL = f "https: // api.telegram.org/bot{TOKEN}/sendMessage "
    async с httpx.AsyncClient () в качестве клиента:
        ждать client. post (API_URL, json = tg_msg)
 

Здесь у нас есть функция, которая имеет сообщение в качестве аргумента. Telegram отлично поддерживает Markdown и HTML-форматирование сообщений. Давайте воспользуемся здесь опцией форматирования Markdown. Вы можете узнать больше о параметрах форматирования сообщений Telegram здесь.

Telegram Bot API требует данных в виде JSON в качестве тела запроса POST к конечной точке sendMessage .Для отправки сообщения телу JSON необходимы следующие ключи:

  • Ключ CHAT_ID предназначен для идентификатора чата пользователя, которому бот должен отправить сообщение
  • Текст — это то, чем должно быть сообщение
  • parse_mode — для параметра форматирования сообщения
  • О других ключах для метода sendMessage API можно прочитать в документации.

Мы используем словари Python в качестве тела запроса POST и отправляем запрос с httpx. Httpx — это асинхронная HTTP-библиотека с аналогичным API библиотеки запросов Python.

После отправки сообщения мы получим ответ в формате JSON независимо от того, было отправлено сообщение или нет.

Запуск и тестирование сервера

Давайте запустим наш сервер. Вот полный исходный код:

 # main.py
из fastapi import FastAPI, Request
импорт ОС
импортировать httpx

app = FastAPI ()

TOKEN = os.getenv ("TOKEN") # API-ключ Telegram Bot
CHAT_ID = os.getenv ("CHAT_ID") # ID чата Telegram

async def sendTgMessage (сообщение: str):
    "" "
    Отправляет сообщение в Telegram с помощью Telegram BOT API
    "" "
    печать (сообщение)
    tg_msg = {"chat_id": CHAT_ID, "text": message, "parse_mode": "Markdown"}
    API_URL = f "https: // api.telegram.org/bot{TOKEN}/sendMessage "
    async с httpx.AsyncClient () в качестве клиента:
        ждать client.post (API_URL, json = tg_msg)

@ app.post ("/ хук")
async def recWebHook (req: Request):
    "" "
    Получите Webhook и обработайте полезную нагрузку Webhook, чтобы получить соответствующие данные
    Обратитесь к https://developer. github.com/webhooks/event-payloads для всех событий и полезных данных GitHub Webhook.
    "" "
    body = ожидание req.json ()
    печать (тело)
    event = req.headers.get («X-Github-Event»)
    if event == "star": # проверить, помечено ли событие звездой
        nos_stars = body \ ["репозиторий" \] ["количество звездочетов"]
        starrer_username = body \ ["отправитель" \] ["логин"]
        repo_url = body \ ["репозиторий" \] ["html_url"]
        repo_name = body \ ["репозиторий" \] ["имя"]
        message = f "{starrer_username} пометил \ [{repo_name} \] ({repo_url}).\ n \ n Общее количество звезд: {nos_stars} "
        ждите sendTgMessage (сообщение)
    elif event == "pull_request": # проверяем, является ли событие запросом на перенос
        pr_number = body ["число"]
        if body \ ["pull_request" \] ["merged"] == True:
            pr_action = "объединено"
        pr_action = body ["действие"]
        pr_title = body \ ["pull_request" \] ["title"]
        pr_desc = body \ ["pull_request" \] ["body"]
        pr_login = body \ ["отправитель" \] ["логин"]
        pr_login_url = body \ ["отправитель" \] ["html_url"]
        pr_url = body \ ["pull_request" \] ["html_url"]
        message = f "Запрос на получение (\ [{pr_number} \] ({pr_url})) {pr_action} от \ [{pr_login} \] ({pr_login_url}). \ n \ n Название: {pr_title} \ n \ n Описание: {pr_desc} "
        ждите sendTgMessage (сообщение)
 

Чтобы запустить наш сервер, выполните следующую команду в командной строке / терминале. Убедитесь, что вы находитесь в виртуальной среде:

 $ uvicorn main: app --reload --port 9000
 

Это откроет наш сервер на порту 9000. Чтобы получать данные из GitHub на наш локальный сервер, мы должны открыть доступ к нашему локальному серверу в Интернет, здесь и появляется ngrok. Мы уже установили Pyngrok с помощью pip.Pyngrok — это оболочка Python для ngrok с собственным двоичным кодом для распространения.

Для туннелирования нашего сервера нам нужно, чтобы наш сервер работал. Откройте другое окно или вкладку терминала / командной строки и активируйте виртуальную среду. Затем выполните следующее:

 $ нгрок http 9000
 

Вы должны увидеть примерно такой результат:

Будет два URL-адреса, которые будут открывать доступ к нашему локальному серверу. Нам понадобится только один с префиксом https или второй URL.

Следующим шагом является указание GitHub отправлять веб-перехватчики по этому URL-адресу.

Подключение к GitHub

Чтобы подключить наш сервер к GitHub, нам нужен репозиторий. Это может быть новый репозиторий или существующий. Если вы хотите создать новый репозиторий, перейдите на https://github.new, чтобы создать новый репозиторий.

Чтобы настроить веб-перехватчики, перейдите на вкладку settings в вашем репозитории и выберите раздел веб-перехватчиков . Нажмите кнопку Добавить веб-перехватчик , чтобы добавить новый перехватчик.Затем вам будет предложено ввести пароль GitHub.

После этого добавьте URL-адрес, который мы получили от ngrok (не забудьте добавить / hook в качестве суффикса к URL-адресу), поскольку это наша конечная точка для получения веб-перехватчиков. Измените тип содержимого на application / json . Затем выберите события веб-перехватчика, которые хотите получить. В нашем случае нам нужны события star и pull_request . Наконец, сохраните эти изменения.

Вот короткое видео с пошаговым руководством.

Чтобы убедиться, что наш бот работает, пометьте репозиторий. Если все работает правильно, мы получим сообщение в Telegram на указанный CHAT_ID от созданного нами бота. Вот пример сообщения.

Поздравляем! Наш сервер работает и отправляет сообщения в Telegram. Как это круто?

Вы можете расширить обработку веб-перехватчиков, чтобы получать подробную информацию о проблемах, обзорах, push-уведомлениях и т. Д. Все события веб-перехватчика хорошо задокументированы в документации GitHub.Кроме того, документация Telegram Bot API является хорошим справочником.

Вы можете найти полный исходный код на GitHub.

Следующие шаги по использованию GitHub и Telegram

Конечно, вы можете расширить этот проект, чтобы получать информацию о проблемах, новых пушах и проверках запросов на вытягивание, а также о любых других событиях веб-перехватчиков GitHub. Но убедитесь, что вы изменили нужные события в настройках веб-перехватчика GitHub для этого.

Вы также можете отправлять сообщения на каналов / групп с помощью бота — просто добавьте бота в канал / группу и измените переменную среды CHAT_ID на идентификатор канала / группы.

Заключение

Мы узнали, как создать REST API с FastAPI и Python, как создать Telegram Bot и подключить локальный сервер к GitHub с помощью ngrok. Спасибо за чтение!

Как создать бота Telegram и отправлять сообщения через API

Telegram полностью поддерживает использование ботов через API ботов Telegram. Боты могут делать что угодно — и на самом деле они ограничены только тем, что может придумать ваше воображение.Вы можете использовать их для поиска, отправки напоминаний или интеграции с другими сервисами. Сейчас существует множество приложений, поддерживающих использование ботов Telegram. Вы можете интегрировать своего бота с Plex и получать уведомления, когда члены семьи воспроизводят контент или когда Plex не работает. Если у вас есть Synology или другое устройство NAS, вы также можете настроить параметры для отправки предупреждений и сообщений через Telegram bot API. Вы даже можете написать собственное решение для использования своего бота или использовать что-то вроде PoshGram для интеграции с вашим текущим рабочим процессом.

Если вы предпочитаете формат видео, а не письменную документацию, я продемонстрирую, как создать бота Telegram с помощью BotFather и использовать нового бота для отправки сообщений:

1. Найдите и начните разговор с BotFather

Если вы никогда раньше не разговаривали с @BotFather, просто откройте свои контакты и найдите его. Затем добавьте его в список контактов и начните с ним разговор.

2. Используйте newbot, чтобы заставить BotFather создать вашего бота

Достаточно одной команды, чтобы заставить BotFather создать нового бота: / newbot

После ввода вам просто нужно будет указать имя вашего нового бота. bot и имя пользователя нового бота, которое должно оканчиваться на bot .Обычно я оставляю их похожими на это:

  • Имя бота: techoughtts
  • Имя пользователя бота: techoughtts_bot
/ newbot
nameOfYourBot
userNameOfYour_Bot
 

3. Скопируйте и сохраните токен бота

BotFather предоставит вам новый токен доступа бота. Скопируйте это и храните в надежном месте. Вы будете использовать этот токен всякий раз, когда захотите отправлять сообщения через нового бота.

Чтобы использовать вашего нового бота для отправки сообщений, вам необходимо добавить своего бота в качестве участника группы в желаемый чат Telegram. Когда это будет выполнено, вам нужно будет указать номер чата. Есть много способов найти идентификатор чата, но я обнаружил, что самый простой — войти в веб-клиент Telegram и щелкнуть нужную группу чата. Оттуда вы можете указать идентификатор чата в URL-адресе вашего браузера.

Не забудьте добавить «-» перед идентификатором канала! Пример: 263767625 будет: -263767625

Вооружившись токеном и идентификатором чата, вы можете задействовать Telegram API для отправки сообщений с вашим новым ботом!

# вы размещаете токен бота и идентификатор чата в соответствующем месте адреса Telegram API
$ token = "6048
: AAEtNizH6-nr3tOINAIhzmWy8VJjSKhjQK4" $ chat = "-263767625" https: // api.telegram.org/bot$token/sendMessage?chat_id=$chat&text=Hello+World # вот полный пример: https://api.telegram.org/bot6048
:AAEtNizH6-nr3tOINAIhzmWy8VJjSKhjQK4/sendMessage?chat_id=-263767625&text=Hello+World

Вот несколько ссылок для получения дополнительной информации о ботах Telegram:

Если вы используете PowerShell и хотите добавить возможности обмена сообщениями Telegram, посмотрите PoshGram.