diff --git a/.travis.yml b/.travis.yml index f5f202a..d316722 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,10 @@ language: python python: - - "2.6" - "2.7" - - "3.3" - "3.4" - "3.5" - "3.6" + - "3.7" - "pypy" - "pypy3" install: "pip install -r requirements.txt" diff --git a/README.md b/README.md index 874f01b..c4e0534 100644 --- a/README.md +++ b/README.md @@ -251,7 +251,7 @@ updates = tb.get_updates() updates = tb.get_updates(1234,100,20) #get_Updates(offset, limit, timeout): # sendMessage -tb.send_message(chatid, text) +tb.send_message(chat_id, text) # forwardMessage tb.forward_message(to_chat_id, from_chat_id, message_id) @@ -566,7 +566,7 @@ Get help. Discuss. Chat. * [Telegram Proxy Bot](https://github.com/mrgigabyte/proxybot) by *mrgigabyte* - `Credits for the original version of this bot goes to` **Groosha** `, simply added certain features which I thought were needed`. * [RadRetroRobot](https://github.com/Tronikart/RadRetroRobot) by *Tronikart* - Multifunctional Telegram Bot RadRetroRobot. * [League of Legends bot](https://telegram.me/League_of_Legends_bot) ([source](https://github.com/i32ropie/lol)) by *i32ropie* -* [NeoBot](https://github.com/neoranger/NeoBot) by *neoranger* +* [NeoBot](https://github.com/neoranger/NeoBot) by [@NeoRanger](https://github.com/neoranger) * [TagAlertBot](https://github.com/pitasi/TagAlertBot) by *pitasi* * [ComedoresUGRbot](http://telegram.me/ComedoresUGRbot) ([source](https://github.com/alejandrocq/ComedoresUGRbot)) by [*alejandrocq*](https://github.com/alejandrocq) - Telegram bot to check the menu of Universidad de Granada dining hall. * [picpingbot](https://web.telegram.org/#/im?p=%40picpingbot) - Fun anonymous photo exchange by Boogie Muffin. @@ -591,6 +591,7 @@ Get help. Discuss. Chat. * [MusicQuiz_bot](https://t.me/MusicQuiz_bot) by [Etoneja](https://github.com/Etoneja) - Listen to audiosamles and try to name the performer of the song. * [Bot-Telegram-Shodan ](https://github.com/rubenleon/Bot-Telegram-Shodan) by [rubenleon](https://github.com/rubenleon) * [MandangoBot](https://t.me/MandangoBot) by @Alvaricias - Bot for managing Marvel Strike Force alliances (only in spanish, atm). +* [ManjaroBot](https://t.me/ManjaroBot) by [@NeoRanger](https://github.com/neoranger) - Bot for Manjaro Linux Spanish group with a lot of info for Manjaro Newbies. * [VigoBusTelegramBot](https://t.me/vigobusbot) ([GitHub](https://github.com/Pythoneiro/VigoBus-TelegramBot)) - Bot that provides buses coming to a certain stop and their remaining time for the city of Vigo (Galicia - Spain) * [kaishnik-bot](https://t.me/kaishnik_bot) ([source](https://github.com/airatk/kaishnik-bot)) by *airatk* - bot which shows all the necessary information to KNTRU-KAI students. * [Creation Date](https://t.me/creationdatebot) by @karipov - interpolates account creation dates based on telegram given ID’s @@ -598,5 +599,6 @@ Get help. Discuss. Chat. * [kboardbot](https://t.me/kboardbot) by [kor0p](https://github.com/kor0p) - inline switches keyboard layout (English, Hebrew, Ukrainian, Russian). * [Robbie](https://t.me/romdeliverybot) ([source](https://github.com/FacuM/romdeliverybot_support)) by @FacuM - Support Telegram bot for developers and maintainers. * [AsadovBot](https://t.me/asadov_bot) ([source](https://github.com/desexcile/BotApi)) by @DesExcile - Сatalog of poems by Eduard Asadov. +* [thesaurus_com_bot](https://t.me/thesaurus_com_bot) ([source](https://github.com/LeoSvalov/words-i-learn-bot)) by @LeoSvalov - words and synonyms from [dictionary.com](https://www.dictionary.com) and [thesaurus.com](https://www.thesaurus.com) in the telegram. Want to have your bot listed here? Send a Telegram message to @eternnoir or @pevdh. diff --git a/telebot/__init__.py b/telebot/__init__.py index 70afb35..d33f12d 100644 --- a/telebot/__init__.py +++ b/telebot/__init__.py @@ -579,7 +579,7 @@ class TeleBot: return types.ChatMember.de_json(result) def send_message(self, chat_id, text, disable_web_page_preview=None, reply_to_message_id=None, reply_markup=None, - parse_mode=None, disable_notification=None): + parse_mode=None, disable_notification=None, timeout=None): """ Use this method to send text messages. @@ -597,7 +597,7 @@ class TeleBot: """ return types.Message.de_json( apihelper.send_message(self.token, chat_id, text, disable_web_page_preview, reply_to_message_id, - reply_markup, parse_mode, disable_notification)) + reply_markup, parse_mode, disable_notification, timeout)) def forward_message(self, chat_id, from_chat_id, message_id, disable_notification=None): """ @@ -843,7 +843,7 @@ class TeleBot: :param user_id: Int : Unique identifier of the target user :param until_date: Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever - :return: types.Message + :return: boolean """ return apihelper.kick_chat_member(self.token, chat_id, user_id, until_date) diff --git a/telebot/apihelper.py b/telebot/apihelper.py index 142086d..056d491 100644 --- a/telebot/apihelper.py +++ b/telebot/apihelper.py @@ -45,7 +45,7 @@ def _make_request(token, method_name, method='get', params=None, files=None): request_url = "https://api.telegram.org/bot{0}/{1}".format(token, method_name) else: request_url = API_URL.format(token, method_name) - + logger.debug("Request: method={0} url={1} params={2} files={3}".format(method, request_url, params, files)) read_timeout = READ_TIMEOUT connect_timeout = CONNECT_TIMEOUT @@ -124,7 +124,7 @@ def download_file(token, file_path): def send_message(token, chat_id, text, disable_web_page_preview=None, reply_to_message_id=None, reply_markup=None, - parse_mode=None, disable_notification=None): + parse_mode=None, disable_notification=None, timeout=None): """ Use this method to send text messages. On success, the sent Message is returned. :param token: @@ -149,6 +149,8 @@ def send_message(token, chat_id, text, disable_web_page_preview=None, reply_to_m payload['parse_mode'] = parse_mode if disable_notification: payload['disable_notification'] = disable_notification + if timeout: + payload['connect-timeout'] = timeout return _make_request(token, method_url, params=payload, method='post') diff --git a/telebot/types.py b/telebot/types.py index 4975190..977382f 100644 --- a/telebot/types.py +++ b/telebot/types.py @@ -404,6 +404,7 @@ class Message(JsonDeserializable): self.date = date self.chat = chat self.forward_from_chat = None + self.forward_from_message_id = None self.forward_from = None self.forward_date = None self.reply_to_message = None @@ -483,10 +484,10 @@ class Message(JsonDeserializable): url = "tg://user?id={0}".format(user.id) elif type == "mention": url = "https://t.me/{0}".format(text[1:]) + text = text.replace("&", "&").replace("<", "<").replace(">", ">") if not type or not _subs.get(type): return text subs = _subs.get(type) - text = text.replace("&", "&").replace("<", "<").replace(">", ">") return subs.format(text=text, url=url) offset = 0 @@ -1932,6 +1933,7 @@ class ShippingOption(JsonSerializable): """ for price in args: self.prices.append(price) + return self def to_json(self): price_list = []