diff --git a/README.md b/README.md index dae46a2..6338613 100644 --- a/README.md +++ b/README.md @@ -60,17 +60,61 @@ while True: time.sleep(20) ``` +## TeleBot API usage + +***NOTICE*** : Message type only support text now. + +```python +import telebot +import time + +TOKEN = '' +tb = telebot.TeleBot(TOKEN) #create new Telegram Bot object + +# getMe +user = tb.get_me() + +# sendMessage +tb.send_message(chatid, text) + +# forwardMessage +# tb.forward_message(10894,926,3) +tb.forward_message(to_chat_id, from_chat_id, message_id) + +# sendPhoto +photo = open('/tmp/photo.png', 'rb') +tb.send_photo(chat_id, photo) + +# sendAudio +audio = open('/tmp/audio.ogg', 'rb') +tb.send_audio(chat_id, audio) + +# sendDocument +doc = open('/tmp/file.txt', 'rb') +tb.send_document(chat_id, doc) + +# sendSticker +sti = open('/tmp/sti.webp', 'rb') +tb.send_sticker(chat_id, sti) + +# sendVideo +video = open('/tmp/video.mp4', 'rb') +tb.send_video(chat_id, video) + +``` + ## TODO +- [ ] Let message not only support text. - [x] getMe - [x] sendMessage - [x] forwardMessage -- [ ] sendPhoto -- [ ] sendAudio -- [ ] sendDocument -- [ ] sendSticker -- [ ] sendVideo +- [x] sendPhoto +- [x] sendAudio +- [x] sendDocument +- [x] sendSticker +- [x] sendVideo - [ ] sendLocation - [ ] sendChatAction - [ ] getUserProfilePhotos -- [x] getUpdates +- [ ] getUpdates (Only text message support now.) diff --git a/telebot/__init__.py b/telebot/__init__.py index cb2c141..2c304a2 100644 --- a/telebot/__init__.py +++ b/telebot/__init__.py @@ -83,6 +83,7 @@ class TeleBot: time.sleep(interval + 1) self.__stop_polling = False self.polling_thread = threading.Thread(target=self.__polling, args=()) + self.polling_thread.daemon = True self.polling_thread.start() def __polling(self): @@ -112,10 +113,67 @@ class TeleBot: def forward_message(self, chat_id, from_chat_id, message_id): """ - + Use this method to forward messages of any kind. :param chat_id: which chat to forward :param from_chat_id: which chat message from :param message_id: message id :return: """ return apihelper.forward_message(self.token, chat_id, from_chat_id, message_id) + + def send_photo(self, chat_id, photo, caption=None, reply_to_message_id=None, reply_markup=None): + """ + Use this method to send photos. + :param chat_id: + :param photo: + :param caption: + :param reply_to_message_id: + :param reply_markup: + :return: + """ + return apihelper.send_photo(self.token, chat_id, photo, caption, reply_to_message_id, reply_markup) + + def send_audio(self, chat_id, data, reply_to_message_id=None, reply_markup=None): + """ + Use this method to send audio files, if you want Telegram clients to display the file as a playable + voice message. For this to work, your audio must be in an .ogg file encoded with OPUS + :param chat_id: + :param data: + :param reply_to_message_id: + :param reply_markup: + :return: + """ + return apihelper.send_data(self.token, chat_id, data, 'audio', reply_to_message_id, reply_markup) + + def send_document(self, chat_id, data, reply_to_message_id=None, reply_markup=None): + """ + Use this method to send general files. + :param chat_id: + :param data: + :param reply_to_message_id: + :param reply_markup: + :return: + """ + return apihelper.send_data(self.token, chat_id, data, 'document', reply_to_message_id, reply_markup) + + def send_sticker(self, chat_id, data, reply_to_message_id=None, reply_markup=None): + """ + Use this method to send .webp stickers. + :param chat_id: + :param data: + :param reply_to_message_id: + :param reply_markup: + :return: + """ + return apihelper.send_data(self.token, chat_id, data, 'sticker', reply_to_message_id, reply_markup) + + def send_video(self, chat_id, data, reply_to_message_id=None, reply_markup=None): + """ + Use this method to send video files, Telegram clients support mp4 videos. + :param chat_id: + :param data: + :param reply_to_message_id: + :param reply_markup: + :return: + """ + return apihelper.send_data(self.token, chat_id, data, 'video', reply_to_message_id, reply_markup) diff --git a/telebot/apihelper.py b/telebot/apihelper.py index 93720f9..65fa75e 100644 --- a/telebot/apihelper.py +++ b/telebot/apihelper.py @@ -52,3 +52,42 @@ def forward_message(token, chat_id, from_chat_id, message_id): payload = {'chat_id': chat_id, 'from_chat_id': from_chat_id, 'message_id': message_id} req = requests.get(request_url, params=payload) return req.json() + + +def send_photo(token, chat_id, photo, caption=None, reply_to_message_id=None, reply_markup=None): + api_url = telebot.API_URL + method_url = r'sendPhoto' + request_url = api_url + 'bot' + token + '/' + method_url + payload = {'chat_id': chat_id} + files = {'photo': photo} + if caption: + payload['caption'] = caption + if reply_to_message_id: + payload['reply_to_message_id'] = reply_to_message_id + if reply_markup: + payload['reply_markup'] = reply_markup + req = requests.post(request_url, params=payload, files=files) + return req.json() + +def send_data(token, chat_id, data, data_type, reply_to_message_id=None, reply_markup=None): + api_url = telebot.API_URL + method_url = get_method_by_type(data_type) + request_url = api_url + 'bot' + token + '/' + method_url + payload = {'chat_id': chat_id} + files = {data_type: data} + if reply_to_message_id: + payload['reply_to_message_id'] = reply_to_message_id + if reply_markup: + payload['reply_markup'] = reply_markup + req = requests.post(request_url, params=payload, files=files) + return req.json() + +def get_method_by_type(data_type): + if data_type == 'audio': + return 'sendAudio' + if data_type == 'document': + return 'sendDocument' + if data_type == 'sticker': + return 'sendSticker' + if data_type == 'video': + return 'sendVideo'