botranvan / telega.el

GNU Emacs telegram client (unofficial)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

logo telega.el Telegram chat TDLib MELPA MELPA Stable GNU Guix

See Telega Manual for comprehensive documentation.


telega.el is full featured unofficial client for Telegram platform for GNU Emacs.

telega.el is actively developed, for this reason, some features are not implemented, or they are present just as skeleton for future implementation. However, the core parts are mature enough so that it is possible to use telega.el for basic chat.

Features

In some random order:

  • Listing chats, reordering chats according to internal Telegram order
  • Getting info about users, groups and supergroups
  • Joining chats by invitation link M-x telega-chat-join-by-link RET
  • Fetching chat history, sending messages, replies, edits, deleting
  • Resend failed messages
  • Creating new groups, upgrading basicgroup to supergroup
  • Forwarding messages
  • D-Bus notifications on incoming messages in chats with enabled notifications
  • VoIP calls, including D-Bus call notification
  • Downloading files from the cloud
  • Uploading files/media (also pasting images from clipboard) to the cloud
  • Display chat actions, such as "@user is typing..."
  • Display/Update chat's draft message
  • Company backends for emoji (:<emoji> syntax), usernames, hashtags, bot commands completions
  • Secret chats
  • Online global searching chats/contacts/messages
  • Avatars, Photos, Stickers
  • Animated GIF, via ffplay
  • Special messages such as location/live location, voice/video messages, contacts, self-destruct photo/video, etc
  • Poll messages, Poll creation
  • Games, Game Scores
  • Handling local links, such as "tg:" or "https://t.me/xxx"
  • ReplyMarkup (inline keyboard buttons) in the messages
  • InstantView for web pages
  • Blocking/Unblocking users, listing blocked users
  • Inline bots requests, via "@bot query"
  • Chat Lists, "Archived Chats", see telega#100
  • Searching for messages in chat (PARTLY)
  • Shared media
  • Multiple accounts
  • Traffic control, see telega#62
  • TranslationsPlatform support (PARTLY)
  • Message scheduling, reminders [PARTLY]
  • Cloud themes, see TDLib#691
  • Telegram Folders (since TDLib 1.6.6)
  • Disable/Enable message notification on receiver side

Unique features

And much more.

Screenshots

Root buffer screen:

screen15

Chat in @emacs_en group:

screen11

Attaching funny cat sticker:

screen12

Starting with telega.el

See Telega Manual for comprehensive documentation.

How to contribute

Join our Telegram group to discuss the development of telega.el.

Submitting issues is exceptionally helpful.

License

telega.el is licensed under GNU GPL version 3.

FAQ

Q: I have this error while installing telega

Cannot open load file: No such file or directory, visual-fill-column

A: telega.el depends on visual-fill-column package, please install it first. This package is available from MELPA

Q: I have this error while running telega

(error "Invalid image type ‘svg’")

and/or

(error "Invalid image type ‘imagemagick’")

A: telega.el requires Emacs with SVG and ImageMagick support. SVG support in Emacs is done using librsvg library. As to imagemagick, you will need libmagickcore-dev and libmagickwand-dev packages installed. But unfortunately Emacs recently disabled imagemagick support by default (see https://lists.gnu.org/r/emacs-devel/2018-12/msg00036.html). So you need to compile Emacs by hand, specifying --with-imagemagick flag to ./configure script.

Telega won't depend on imagemagick in future, since required image features has been added to newer Emacs, see https://lists.gnu.org/r/emacs-devel/2019-06/msg00242.html

Q: Does telega have proxy support?

A: Yes, use telega-proxies custom variable, for example:

(setq telega-proxies
      (list
       '(:server "1.2.3.4" :port 8080 :enable :false
                 :type (:@type "proxyTypeSocks5"
                               :username "rkn" :password "jopa"))
       '(:server "2.3.4.5" :port 8088 :enable t
                 :type (:@type "proxyTypeSocks5"
                               :username "rkn" :password "jopa"))
       ))

See C-h v telega-proxies RET for full range of proxy types.

Q: Stickers are not shown.

A: Make sure you have imagemagick support and please install webp package

Q: telega.el is unbearable slow.

A: You might be hitting into Emacs bug, described here https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-01/msg00548.html

Also see zevlg#161

Q: There are no glyphs for some unicode characters.

A: Please install fonts-symbola package

Q: There is some formatting issues when some unicode characters are used.

A: Yes, partly. If character has full width of multiple ordinary chars you can tweak char-width-table. Add code like this to your init.el:

(setq telega-symbol-unread "🄌")

(defun my-telega-load ()
  ;; 🄌 occupies two full chars, but (string-width "🄌") returns 1
  ;; so we install custom widths to `char-width-table'
  (telega-symbol-set-width telega-symbol-unread 2)

  ;; ... other code
  )

(add-hook 'telega-load-hook 'my-telega-load)

There is also telega-symbol-widths custom variable, you might want to modify it.

Q: Is there erc-like chats tracking functionality?

A: Yes, set telega-use-tracking-for to non-nil.

Tracking is done only for opened chats, i.e. chats having corresponding chat buffer.

Its value is a Chat Filter.

For example, to enable tracking for chats with enabled notifications or for chats where you have unread mention, use:

(setq telega-use-tracking-for '(or unmuted mention))

Q: Is it possible to use telega in tty-only Emacs (aka emacs-nox)?

A: Yes, set telega-use-images to nil, before start.

Q: Is it possible to use markup in outgoing messages?

A: Yes, use C-u RET to send message with markup. See Sending ordinary messages for details

About

GNU Emacs telegram client (unofficial)

License:GNU General Public License v3.0


Languages

Language:Emacs Lisp 90.7%Language:C 7.6%Language:Scheme 0.6%Language:C++ 0.5%Language:Python 0.4%Language:Makefile 0.1%