Jabber telegram где найти
Перейти к содержимому

Jabber telegram где найти

  • автор:

 

tg4xmpp 0.2 — Jabber-транспорт в сеть Telegram

Вышла вторая (0.2) версия транспорта из Jabber в сеть Telegram.

— Данный транспорт позволяет вам общаться с пользователями Telegram из сети Jabber. Необходим существующий Telegram аккаунт.
— Jabber-транспорты

Зачем это нужно?

— Например, если хотите использовать Telegram на любом устройстве, где нет официального клиента (например, платформа Symbian).

Что умеет транспорт?

­— Авторизовываться, в том числе используя двухфакторную аутентификацию
— Отправлять и принимать сообщения из/в Telegram
— Работать с группами, супергруппами и каналами
— Синхронизировать ростер и статусы
— Загружать медиа из сети Telegram

Что не умеет транспорт?

— Инициировать диалог (т.е. диалог уже должен существовать, либо вам должны написать первому)
— Изменять настройки аккаунта
— Голосовые и видеозвонки
— Секретные чаты

Список изменений с версии 0.1

— Теперь используем Telethon версии 0.15.5
— Повышена стабильность работы
­— Исправлен баг с бесконечными запросами авторизации
— Реализован импорт контакт-листа из Telegram (XEP-0144)
— Когда неизвестный контакт пишет нам, автоматически добавляем его в ростер
— Исправлена обработка статусов
— Исправлен спам статусами (по-умолчанию статусы обновляются не чаще, чем раз в 60 секунд)
— Теперь при перезапуске транспорта сессии поднимаются автоматически
— Полная поддержка «сервисных уведомлений» (кто-то вошёл в группу, вышел из неё и пр.)

Zhabogram 2.0 — транспорт из Jabber в Telegram

Zhabogram — транспорт (мост, шлюз) из сети Jabber (XMPP) в сеть Telegram, написанный на Ruby. Преемник tg4xmpp.

  • Ruby >= 1.9
  • xmpp4r == 0.5.6
  • tdlib-ruby == 2.0 с скомпилированным tdlib == 1.3
  • Авторизация в существующем аккаунте Telegram
  • Синхронизация списка чатов с ростером
  • Синхронизация статусов контактов с ростером
  • Добавление и удаление Telegram-контактов
  • Поддержка VCard с аватарками
  • Отправка, приём, редактирование и удаление сообщений
  • Обработка цитат и пересланных сообщений
  • Отправка и приём файлов и специальных сообщений (поддержка фото, видео, аудио, документов, голосовых сообщений, стикеров, анимаций, геолокаций, системных сообщений)
  • Поддержка секретных чатов
  • Создание, управление и модерирование чатов/супергрупп/каналов
  • Сохранение сессий и автоматическое подключение при входе в сеть XMPP
  • Получение истории и поиск по сообщениям
  • Управление аккаунтом Telegram

Значимые изменения до версии 1.0, новости о которой не было на LOR:

 

  • Добавлена обработка SIGINT с корректным закрытием всех сессий
  • Добавлены (и позднее удалены) поддержка iq:jabber:register (регистрация пользователей), iq:jabber:gateway (поиск контактов)

Транспорт-бот Jabber конференций для Telegram

В один прекрасный день, после значительного перерыва, судьба вновь столкнула меня с jabber-конференциями. Правда, среди знакомых jabber уже никто не использует, 2007 год канул в лету, а основным средством общения стал Telegram. Поддержка XMPP на мобильных устройствах оставляла желать лучшего — клиенты на Android хороши каждый в чём-то одном, с iOS и WP всё мягко скажем, не очень. И особенности протокола тоже сказываются на автономности. Поэтому возникла мысль: а не сделать ли бота, которой будет транслировать сообщения из конференций в чат Telegram?

  • Python 3.5
  • aiohttp для API Telegram
  • slixmpp для xmpp
  • gunicorn как wsgi сервер
  • nginx как фронтенд и прокси для gunicorn
  • VS Code в качестве IDE

Основные возможности и зависимости

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

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

Изначально разрабатывалась версия с tet-a-tet диалогом для одного пользователя, которая позднее была расширена использованием XMPP Components для групповых чатов, с отдельным xmpp-юзером для каждого участника.

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

Почему так сделано? API ботов весьма ограничивает количество входящих/исходящих запросов за короткое время, и при достаточно интенсивном обмене сообщениями будут возникать ошибки.

  • Отправка/приём текстовых сообщений в общем диалоге
  • Двусторонее редактирование сообщений (XEP-0308)
  • Приватные сообщения
  • Ответ по нику собеседника
  • Файлы, аудио, изображения (загружаются через сторонний сервис)
  • Стикеры (заменяются на emoji)
  • Автостатус при неактивности с последнего сообщения
  • Смена ника в конференции
  • «Подсветка» сообщений с ником пользователя не работает в групповых чатах, так как в телеграме невозможно это сделать индивидуально
  • Бот делает групповой чат в телеграмм бесшовным, т.е., если участника забанили в xmpp-конференции, он не может писать сообщения в чат

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

Для использования нужно установить из pip aiohttp, slixmpp и ujson. При желании можно добавить gunicorn. С окружением или без, все пакеты есть в PyPI:

В конце поста есть ссылки на bitbucket репозитории с исходниками.

История telegram

  • На момент начала работы asyncio поддерживал только aiotg. Сейчас, кажется, все популярные
  • Вебхуки часто реализованы как добавка к лонг пуллу и в любом случае приходится использовать библиотеку для обработки входящих соединений
  • В целом, многие возможности библиотек были просто не нужны
  • Ну или просто NIH

Так что была сделана простенькая обёртка над основными объектами и методами bots api, запросы отправляются с помощью requests, json парсится ujson, потому что быстрее.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *