mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
commit
151880f391
|
@ -26,6 +26,7 @@
|
||||||
* [Using web hooks](#using-web-hooks)
|
* [Using web hooks](#using-web-hooks)
|
||||||
* [Logging](#logging)
|
* [Logging](#logging)
|
||||||
* [Proxy](#proxy)
|
* [Proxy](#proxy)
|
||||||
|
* [New in library](#new-in-library)
|
||||||
* [F.A.Q.](#faq)
|
* [F.A.Q.](#faq)
|
||||||
* [Bot 2.0](#bot-20)
|
* [Bot 2.0](#bot-20)
|
||||||
* [How can I distinguish a User and a GroupChat in message.chat?](#how-can-i-distinguish-a-user-and-a-groupchat-in-messagechat)
|
* [How can I distinguish a User and a GroupChat in message.chat?](#how-can-i-distinguish-a-user-and-a-groupchat-in-messagechat)
|
||||||
|
@ -510,6 +511,10 @@ apihelper.proxy = {'https':'socks5://userproxy:password@proxy_address:port'}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## New in library
|
||||||
|
|
||||||
|
06.06.2019 - Добавленна поддержка опросов (Poll). Добавлены функции send_poll, stop_poll
|
||||||
|
|
||||||
## F.A.Q.
|
## F.A.Q.
|
||||||
|
|
||||||
### Bot 2.0
|
### Bot 2.0
|
||||||
|
|
|
@ -113,6 +113,7 @@ class TeleBot:
|
||||||
getUserProfilePhotos
|
getUserProfilePhotos
|
||||||
getUpdates
|
getUpdates
|
||||||
getFile
|
getFile
|
||||||
|
sendPoll
|
||||||
kickChatMember
|
kickChatMember
|
||||||
unbanChatMember
|
unbanChatMember
|
||||||
restrictChatMember
|
restrictChatMember
|
||||||
|
@ -1044,6 +1045,12 @@ class TeleBot:
|
||||||
disable_notification, reply_to_message_id, reply_markup, provider_data)
|
disable_notification, reply_to_message_id, reply_markup, provider_data)
|
||||||
return types.Message.de_json(result)
|
return types.Message.de_json(result)
|
||||||
|
|
||||||
|
def send_poll(self, chat_id, poll, disable_notifications=False, reply_to_message=None, reply_markup=None):
|
||||||
|
return types.Message.de_json(apihelper.send_poll(self.token, chat_id, poll.question, poll.options, disable_notifications, reply_to_message, reply_markup))
|
||||||
|
|
||||||
|
def stop_poll(self, chat_id, message_id):
|
||||||
|
return types.Poll.de_json(apihelper.stop_poll(self.token, chat_id, message_id))
|
||||||
|
|
||||||
def answer_shipping_query(self, shipping_query_id, ok, shipping_options=None, error_message=None):
|
def answer_shipping_query(self, shipping_query_id, ok, shipping_options=None, error_message=None):
|
||||||
return apihelper.answer_shipping_query(self.token, shipping_query_id, ok, shipping_options, error_message)
|
return apihelper.answer_shipping_query(self.token, shipping_query_id, ok, shipping_options, error_message)
|
||||||
|
|
||||||
|
@ -1750,3 +1757,11 @@ class AsyncTeleBot(TeleBot):
|
||||||
@util.async_dec()
|
@util.async_dec()
|
||||||
def delete_sticker_from_set(self, *args, **kwargs):
|
def delete_sticker_from_set(self, *args, **kwargs):
|
||||||
return TeleBot.delete_sticker_from_set(self, *args, **kwargs)
|
return TeleBot.delete_sticker_from_set(self, *args, **kwargs)
|
||||||
|
|
||||||
|
@util.async_dec()
|
||||||
|
def send_poll(self, *args, **kwargs):
|
||||||
|
return TeleBot.send_poll(self, *args, **kwargs)
|
||||||
|
|
||||||
|
@util.async_dec()
|
||||||
|
def stop_poll(self, *args, **kwargs):
|
||||||
|
return TeleBot.stop_poll(self, *args, **kwargs)
|
||||||
|
|
|
@ -938,6 +938,26 @@ def delete_sticker_from_set(token, sticker):
|
||||||
return _make_request(token, method_url, params=payload, method='post')
|
return _make_request(token, method_url, params=payload, method='post')
|
||||||
|
|
||||||
|
|
||||||
|
def send_poll(token, chat_id, question, options, disable_notifications=False, reply_to_message_id=None, reply_markup=None):
|
||||||
|
method_url = r'sendPoll'
|
||||||
|
payload = {'chat_id': str(chat_id), 'question': question, 'options': _convert_list_json_serializable(options)}
|
||||||
|
if disable_notifications:
|
||||||
|
payload['disable_notification'] = disable_notifications
|
||||||
|
if reply_to_message_id:
|
||||||
|
payload['reply_to_message_id'] = reply_to_message_id
|
||||||
|
if reply_markup:
|
||||||
|
payload['reply_markup'] = _convert_markup(reply_markup)
|
||||||
|
return _make_request(token, method_url, params=payload)
|
||||||
|
|
||||||
|
|
||||||
|
def stop_poll(token, chat_id, message_id, reply_markup=None):
|
||||||
|
method_url = r'stopPoll'
|
||||||
|
payload = {'chat_id': str(chat_id), 'message_id': message_id}
|
||||||
|
if reply_markup:
|
||||||
|
payload['reply_markup'] = _convert_markup(reply_markup)
|
||||||
|
return _make_request(token, method_url, params=payload)
|
||||||
|
|
||||||
|
|
||||||
def _convert_list_json_serializable(results):
|
def _convert_list_json_serializable(results):
|
||||||
ret = ''
|
ret = ''
|
||||||
for r in results:
|
for r in results:
|
||||||
|
|
|
@ -368,6 +368,9 @@ class Message(JsonDeserializable):
|
||||||
if 'connected_website' in obj:
|
if 'connected_website' in obj:
|
||||||
opts['connected_website'] = obj['connected_website']
|
opts['connected_website'] = obj['connected_website']
|
||||||
content_type = 'connected_website'
|
content_type = 'connected_website'
|
||||||
|
if 'poll' in obj:
|
||||||
|
opts['poll'] = Poll.de_json(obj['poll'])
|
||||||
|
content_type = 'poll'
|
||||||
return cls(message_id, from_user, date, chat, content_type, opts, json_string)
|
return cls(message_id, from_user, date, chat, content_type, opts, json_string)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -2197,3 +2200,48 @@ class InputMediaDocument(InputMedia):
|
||||||
if self.thumb:
|
if self.thumb:
|
||||||
ret['thumb'] = self.thumb
|
ret['thumb'] = self.thumb
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
class PollOption(JsonSerializable, JsonDeserializable):
|
||||||
|
@classmethod
|
||||||
|
def de_json(cls, json_type):
|
||||||
|
obj = cls.check_json(json_type)
|
||||||
|
text = obj['text']
|
||||||
|
voter_count = int(obj['voter_count'])
|
||||||
|
option = cls(text)
|
||||||
|
option.voter_count = voter_count
|
||||||
|
return option
|
||||||
|
|
||||||
|
def __init__(self, text):
|
||||||
|
self.text = text
|
||||||
|
self.voter_count = 0
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return json.dumps(self.text)
|
||||||
|
|
||||||
|
|
||||||
|
class Poll(JsonDeserializable):
|
||||||
|
@classmethod
|
||||||
|
def de_json(cls, json_type):
|
||||||
|
obj = cls.check_json(json_type)
|
||||||
|
poll_id = obj['id']
|
||||||
|
question = obj['question']
|
||||||
|
poll = cls(question)
|
||||||
|
options = []
|
||||||
|
for opt in obj['options']:
|
||||||
|
options.append(PollOption.de_json(opt))
|
||||||
|
poll.options = options
|
||||||
|
is_closed = obj['is_closed']
|
||||||
|
poll.id = poll_id
|
||||||
|
poll.is_closed = is_closed
|
||||||
|
return poll
|
||||||
|
|
||||||
|
def __init__(self, question):
|
||||||
|
self.options = []
|
||||||
|
self.question = question
|
||||||
|
|
||||||
|
def add(self, option):
|
||||||
|
if type(option) is PollOption:
|
||||||
|
self.options.append(option)
|
||||||
|
else:
|
||||||
|
self.options.append(PollOption(option))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user