Giter Site home page Giter Site logo

telegramgo's Introduction

Telegram messenger CLI

Command-line interface for Telegram. Uses readline interface.

Build

Dependencies

MTProto - library for working with Telegram API

Release

make

Debug

make debug

Commands

Press CTRL-C to input command. Availables commands:

  • \me - shows information about current account
  • \contacts - shows contacts list
  • \umsg - sends message to user with
  • \cmsg - sends message to chat with
  • \help - shows available commands
  • \quit - quit from program

English Documentation

  • coming shortly

Note for Russian Speaking users

Библиотека для работы с Telegram API на Go

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

Если вам надо написать архиватор сообщений из супергрупп и каналов Telegram'a,вы попали в правильное место.

Библиотека

Большая часть кода позаимствована из http://github.com/sdidyk/mtproto .

Отличия:

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

Кодогенерация

Большая часть кода генерируется спомощью простого скрипта на Python, который выполняет трансляцию из TL(о нем ниже) в Go. В дальнейшем, будут генерироваться не только структуры на Go и методы их сериализации/десереализации из бинарного кода, а ещё функции для вызова процедур API. https://github.com/shelomentsevd/mtproto

О Telegram API и проблемах с документацией

Telegram для обмена данными между сервером и клиентом использует RPC протокол, который описывается через TL-схему. Язык TL(Type Language or Time Limit) описывает как данные будут сериализоваться в бинарный код или десериализовываться из него. Например вот так выглядит описание чата из 23-ей версии схемы Telegram API:

chat#6e9c9bc7 id:int title:string photo:ChatPhoto participants_count:int date:int left:Bool version:int = Chat;

В самом начале пакета идет 4 байта безнакового числа, которые служат индетификатором процедуры или объекта, по ним сервер или клиент догадывается что это и какие данные будут следующими. В нашем случае это "6e9c9bc7". Дальше идут поля структуры в том порядке в каком они записаны в TL-схеме. Подробнее о том как работает протокол и сериализация можно прочитать здесь: https://core.telegram.org/mtproto/TL

К сожалению, на core.telegram.org вы не найдете актуальной версии TL-схемы Telegram API и документации к ней, а только описание языка и работы самого протокола.

Язык

Примеры работы с Telegram API

Contacts

Feel free to ping me in Telegram or drop me email. If you are in Moscow, feel free to invite me for coffee or quick chat in your office ;)))

License

MIT

telegramgo's People

Contributors

savely-krasovsky avatar shelomentsevd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

telegramgo's Issues

Vim plugin

Можно ли его подключить к виму как плагин?

Вообще не понятно ниче

тут

mtproto, err := mtproto.NewMTProto(41994, "269069e15c81241f5670c397941016a2", mtproto.WithAuthFile(os.Getenv("HOME")+"/.telegramgo", false))
я так понимаю должны быть свои id и hash, но про это нигде не сказано. Что за os.Getenv("HOME")+"/.telegramgo какой структуры данный файл? У меня не работает, после попытки авторизации
err := telegramCLI.Authorization(phonenumber)
возвращается ошибка SESSION_PASSWORD_NEEDED и через какое-то время тележка присылает сообщение

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

я так понимаю где-то нужно указать пароль и сейчас это файл telegramgo?

Add registration

  1. Start telegramgo
  2. Input a phone number
  3. Check number is it registered or not
  4. If number isn't registered: try to register user

Prompt string do not show until ^C combination

After each input I should press ^C to get "User input: " prompt string and if I do not do it - all my input would be just ignored.
It looks like this:

User input: \contacts
        id        mutual    name                              username
        ...
^C
User input:

Also it would be great to add completion for:

  • commands (\c => \commands)
  • user id's \umsg
\umsg <TAB>
1 - user1
2 - user2
3 - user3
\umsg

Changing user id's input on usernames input would be also cool.

flood wait

after while we get FLOOD_WAIT_X error or auth_key_unregistered error

Getting panic: runtime error: invalid memory address or nil pointer dereference

goroutine 8 [running]:
github.com/shelomentsevd/mtproto.(*Network).Read(0xc420062120, 0x0, 0x0, 0x0, 0x0)
	/usr/local/share/GOPATH/src/github.com/shelomentsevd/mtproto/network.go:220 +0x7a
github.com/shelomentsevd/mtproto.(*MTProto).readRoutine.func2(0xc42008e210, 0xc4200622a0)
	/usr/local/share/GOPATH/src/github.com/shelomentsevd/mtproto/mtproto.go:266 +0x49
created by github.com/shelomentsevd/mtproto.(*MTProto).readRoutine
	/usr/local/share/GOPATH/src/github.com/shelomentsevd/mtproto/mtproto.go:265 +0xef

Problem with Iran's phone numbers

I've tried your work before, seems you have some issues after reconnecting to another datacenter

You can test with my test phone number: +989140300864

Here is what I get:
Exiting readRoutine inner routineError making AuthKey: &{%!e(string=Server response error: -404)}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.