def send_audio(self, chat_id, audio, filename='audio', duration=None, performer=None, title=None, reply_to_message_id=None, reply_markup=None, timeout=30): method = r'sendAudio' payload = {'chat_id': chat_id} files = None if not is_string(audio): files = {'audio': (filename, audio)} else: payload['audio'] = audio if duration: payload['duration'] = duration if performer: payload['performer'] = performer if title: payload['title'] = title if reply_to_message_id: payload['reply_to_message_id'] = reply_to_message_id # if reply_markup: # payload['reply_markup'] = _convert_markup(reply_markup) request = yield _request(self.token, method, 'POST', params=payload, files=files, timeout=timeout) returnValue(Message.de_json(request))
def send_audio(self, chat_id, audio, filename='audio', duration=None, performer=None, title=None, caption=None, reply_to_message_id=None, reply_markup=None, timeout=None): method = r'sendAudio' payload = {'chat_id': chat_id} files = None if not is_string(audio): files = {'audio': (filename, audio)} else: payload['audio'] = audio if duration: payload['duration'] = duration if performer: payload['performer'] = performer if title: payload['title'] = title 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'] = _convert_markup(reply_markup) request = yield self._request(method, 'POST', params=payload, files=files, timeout=timeout) returnValue(Message.de_json(request))
def get_update(self): payload = {'timeout': 20, 'offset': self.last_update_id + 1} updates = yield _request(self.token, 'getUpdates', params=payload, timeout=25) new_messages_ids = set() new_messages = [] for update in updates: log.debug("New update. ID: {update_id}", update_id=update['update_id']) if update['update_id'] > self.last_update_id: self.last_update_id = update['update_id'] if 'inline_query' in update.keys(): inline_query = InlineQuery.de_json(update['inline_query']) self.process_inline_query(inline_query) elif 'chosen_inline_result' in update.keys(): chosen_inline_result = ChosenInlineResult.de_json(update['chosen_inline_result']) self.process_chosen_inline_query(chosen_inline_result) elif 'message' in update.keys(): msg = Message.de_json(update['message']) msg.bot_name = self.name if not msg.from_user.id in new_messages_ids: new_messages.append(msg) new_messages_ids.add(msg.from_user.id) elif 'callback_query' in update.keys(): callback_query = CallbackQuery.de_json(update['callback_query']) self.process_callback_query(callback_query) else: log.debug("Unknown update type: {update}", update=json.dumps(update, skipkeys=True, ensure_ascii=False, default=lambda o: o.__dict__)) if len(new_messages) > 0: self.process_new_messages(new_messages)
def get_update(self, telegram_timeout=10, timeout=None, limit=100): payload = {'timeout': telegram_timeout, 'offset': self.last_update_id + 1, 'limit': limit} if self.allowed_updates: payload['allowed_updates'] = self.allowed_updates updates = yield self._request('getUpdates', params=payload, timeout=timeout) if self.on_updated_listener: self.on_updated_listener(updates) max_update_id = -1 inline_queries = [] chosen_inline_results = [] callback_queries = [] channel_posts = [] messages = [] for update in updates: if self._noisy: log.debug("New update. ID: {update_id}", update_id=update['update_id']) self._notify_update_prehandlers(update) if 'inline_query' in update: inline_queries.append(InlineQuery.de_json(update['inline_query'])) elif 'chosen_inline_result' in update: chosen_inline_results.append(ChosenInlineResult.de_json(update['chosen_inline_result'])) elif 'callback_query' in update: callback_queries.append(CallbackQuery.de_json(update['callback_query'])) elif 'channel_post' in update: channel_posts.append(ChannelPost(Message.de_json(update['channel_post']))) elif 'message' in update: msg = Message.de_json(update['message']) msg.bot_name = self.name # FIXME: a hack messages.append(msg) else: log.debug("Unsupported update type: {update}", update=json.dumps(update, skipkeys=True, ensure_ascii=False, default=lambda o: o.__dict__)) if update['update_id'] > max_update_id: max_update_id = update['update_id'] yield self.process_updates(inline_queries, chosen_inline_results, callback_queries, channel_posts, messages) self.last_update_id = max_update_id
def edit_message_text(self, chat_id, message_id, text, parse_mode=None, disable_web_page_preview=None, reply_markup=None): method = r'editMessageText' payload = {'chat_id': str(chat_id), 'message_id': str(message_id), 'text': text} if disable_web_page_preview: payload['disable_web_page_preview'] = disable_web_page_preview if reply_markup: if isinstance(reply_markup, JsonSerializable): payload['reply_markup'] = reply_markup.to_json() elif isinstance(reply_markup, dict): payload['reply_markup'] = json.dumps(reply_markup) if parse_mode: payload['parse_mode'] = parse_mode request = yield self._request(method, 'POST', params=payload) returnValue(Message.de_json(request))
def send_message(self, chat_id, text, disable_web_page_preview=None, reply_to_message_id=None, reply_markup=None, parse_mode=None): method = r'sendMessage' payload = {'chat_id': str(chat_id), 'text': text} if disable_web_page_preview: payload['disable_web_page_preview'] = disable_web_page_preview if reply_to_message_id: payload['reply_to_message_id'] = reply_to_message_id if reply_markup: payload['reply_markup'] = _convert_markup(reply_markup) if parse_mode: payload['parse_mode'] = parse_mode request = yield self._request(method, 'POST', params=payload) returnValue(Message.de_json(request))
def edit_message_text(self, chat_id, message_id, text, parse_mode=None, disable_web_page_preview=None, reply_markup=None): method = r'editMessageText' payload = {'chat_id': str(chat_id), 'message_id': str(message_id), 'text': text} if disable_web_page_preview: payload['disable_web_page_preview'] = disable_web_page_preview if reply_markup: if isinstance(reply_markup, JsonSerializable): payload['reply_markup'] = reply_markup.to_json() elif isinstance(reply_markup, dict): payload['reply_markup'] = json.dumps(reply_markup) if parse_mode: payload['parse_mode'] = parse_mode request = yield _request(self.token, method, 'POST', params=payload) returnValue(Message.de_json(request))