#Changelog
caption argument to
send_document("user", "filepath" [, "caption"])help(...) docstrings a bit.pytg.sender.create_automatic_documentation(filename="DOCUMENTATION.md")
creates a markdown formatted file. This uses roughly the same generation
process as the automatic docstrings.DOCUMENTATION_manual.mdcommand_send_message.py example to show the
simplest way to just send a message.bot_with_context.py example to demonstrate how to
build converations with the use of generators and the yield
statement.downloaded_file parser. Returns a string for the
file.status parameter to
Sender.send_typing.AssertionError with secret chats. #74File to FilePath
to be more clear about it beeing a string. (Relates to #67)FailException (subclasses
IllegalResponseException) will be raised if the CLI reports
a error.Username Argument becoming NoneResultParser classes (not instances) will be
instanciated automatically.Sender.message_get not accepting the new
permanent id's. #66source_of_reply.py involving
Sender.message_get to find the first message of a stack of
replies.Sender.channel_rename, and supergroup fixes from
PR #61. Thanks
@huiyiqunSender.reply, the previous
Sender.reply_text became an alias of that.
(ea43060c3f53a3f947fd73cd624c85a412804408)Sender.resolve_username #63
(34ffb3fd15e8e322873c679b74293c3c184284d3)__version__Sender.contacts_search(). #51No handlers could be found for logger "pytg.sender" with
Python 2. #33pip install dependencies bug. #55result_timeout kwarg for all Sender
functions. #49,#48. Thanks @the-gluSender.contact_add(...) #35. Thanks @spikeekipsSender.get_self() to #35. Thanks @spikeekipsluckydonaldUtils
(pip install luckydonald-utils).Receiver.queued_messages(), showing how many
messages are waiting in the queue.Sender not working with python 2. (issue #26,
thanks @Meisolsson.) :Big rename:
pytg2 -> pytg
Thats it.
It is named "pytg" again. Hooray! @luckydonald took over
maintainence.
help()
function:
help(pytg.sender.Sender)official cli support. CLI fork not updated? That is a problem of the past!
No need for telejson any more, you can now run with the offical telegram-cli! Connecting to the cli for sending will now surrender after given retrys, and not loop forever. Also added a CHANGELOG file.
It was fun to develop that json bridge by myself though, and It hurts a bit too left that behind... 😢 But: I learned a lot about C and git on that journy, and I can let my experience with json flow back into the original cli. Everybody will profit from this.
pytg.Telegram, pytg.sender.Sender,
pytg.receiver.Receiver
port_receive,
port_send are unified to port:
tg.Telegram(port=4458) # sending and receiving now uses the same port.from -> sender (Reserved word in
python)to -> receiverout -> own (out is not intuitive as not
mandatory this cli has send the message but the account did.)peer [added] This is where you most likly want to reply
to. It will be the group where the message got send, or the user if it
is a private message.print_namecmd the unique identifier string which will not change.
(exception: secret chats might be replaced by a new one)name is a display name. Either the first name or, if
not set, the username.pytg.sender.Sender
all commands can now raise an exception if the connection (i.e. the connecting) to the cli failed after given number of retries. You should try to restart the cli.
all commands now have a
retry_connect=<value> parameter (as
**kwargs). retry_connect=2 means 3 tries,
first try + 2 retries. This is the default setting.
retry_connect=0, retry_connect=False and
retry_connect=None will not retry,
retry_connect=True or retry_connect= -1 means
to retry infinite times. (this was the default before.)
sender.send_msg("luckydonald", "test message", retry_connect= 10send_photo(): added optional attribute
caption (string, max length: 140).
send_video(): added optionalcaption
parameter (max length: 140).
Example:
#send_photo <peer> <file> [caption]
sender.send_photo(peer, file)
sender.send_photo(peer, file, caption)
sender.send_photo("user#1234", "/path/to/image.png")
sender.send_photo("user#1234", "/path/to/image.png", "This is a image")Updates for telejson beta compatibility. This version never got offically released before the telejson fork got replaced by vysheng's native json implementation. In the end that was way better.
Pytg2 (since v0.4.1 called pytg again)
got overhauled to version 0.3.0, which restructures
heavily, BUT will decrease the CPU usage to around nothing. While the
old versions need to parse the cli output directly, resuling in easy
ways to exploit it, now it is safe, using json internal. You need the
modified telejson-cli for that to work. Without the parsing we don't
have to poll for new output ("Hey, got anything yet? And yet? And yet?
...") but just block until we got new output. The retrieval of new
messaged is multitheaded, so you won't lose any messages if you do heavy
and/or long operations between messages.
Also a nice new feature is an automatic download of files. (more about this, as soon as I get time to edit this...)
updated commands to reflect CLI changes, moved exceptions, better error output
In Detail:
send_typing(peer)set_profile_name(first_name, last_name=None)set_username(username)set_profile_photo(path)create_group_chat(chat_topic, user1, user2, user3, ... )chat_set_name(chat, new_name) as mirror to rename_chat(chat, new_name)rename_chat(chat, new_name)search(pattern, peer=None, limit=None, from_unixtime=None, to_unixtime=None, offset=None)(since commit bb2a631)
uid > useridgid > groupidcmduser > usercmdcmdgroup > groupcmdDid I mention:
**k encoding working!!!'\' crashing bot.(Changelog restored from commit 888ebf)
@luckydonald started
working on a fork. (first commit ea331e,
called version 0.2 since 722361)
Somewhere around commit 072c5f
Back in January 2014, @efaisal started working on pytg. The Telgram-CLI was brand new, and there was no way to interact with it programatically like you could much later with lua or json. Until then there was not a single bot in telegam. There was no talking. There was no smiling. -sigh- There were only rocks. quote reference