API methods added (work in progress)

This commit is contained in:
Davte 2019-06-30 00:53:49 +02:00
parent 5aade209d3
commit 00e09ee79e

View File

@ -350,14 +350,592 @@ class TelegramBot(object):
See https://core.telegram.org/bots/api#sendanimation for details. See https://core.telegram.org/bots/api#sendanimation for details.
""" """
return await self.api_request(
'sendAnimation',
parameters=locals()
)
async def sendVoice(self, chat_id, voice,
caption=None,
parse_mode=None,
duration=None,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""Send an audio file to be displayed as playable voice message.
`voice` must be in an .ogg file encoded with OPUS.
See https://core.telegram.org/bots/api#sendvoice for details.
"""
return await self.api_request(
'sendVoice',
parameters=locals()
)
async def sendVideoNote(self, chat_id, video_note,
duration=None,
length=None,
thumb=None,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""Send a rounded square mp4 video message of up to 1 minute long.
See https://core.telegram.org/bots/api#sendvideonote for details.
"""
return await self.api_request(
'sendVideoNote',
parameters=locals()
)
async def sendMediaGroup(self, chat_id, media,
disable_notification=None,
reply_to_message_id=None):
"""Send a group of photos or videos as an album.
`media` must be a list of `InputMediaPhoto` and/or `InputMediaVideo`
objects.
See https://core.telegram.org/bots/api#sendmediagroup for details.
"""
return await self.api_request(
'sendMediaGroup',
parameters=locals()
)
async def sendLocation(self, chat_id, latitude, longitude,
live_period=None,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""Send a point on the map. May be kept updated for a `live_period`.
See https://core.telegram.org/bots/api#sendlocation for details.
"""
return await self.api_request(
'sendLocation',
parameters=locals()
)
async def editMessageLiveLocation(self, latitude, longitude,
chat_id=None, message_id=None,
inline_message_id=None,
reply_markup=None):
"""Edit live location messages.
A location can be edited until its live_period expires or editing is
explicitly disabled by a call to stopMessageLiveLocation.
The message to be edited may be identified through `inline_message_id`
OR the couple (`chat_id`, `message_id`).
See https://core.telegram.org/bots/api#editmessagelivelocation
for details.
"""
return await self.api_request(
'editMessageLiveLocation',
parameters=locals()
)
async def stopMessageLiveLocation(self,
chat_id=None, message_id=None,
inline_message_id=None,
reply_markup=None):
"""Stop updating a live location message before live_period expires.
The position to be stopped may be identified through
`inline_message_id` OR the couple (`chat_id`, `message_id`).
`reply_markup` may be only and `InlineKeyboardMarkup`.
See https://core.telegram.org/bots/api#stopmessagelivelocation
for details.
"""
return await self.api_request(
'stopMessageLiveLocation',
parameters=locals()
)
async def sendVenue(self, chat_id, latitude, longitude, title, address,
foursquare_id=None,
foursquare_type=None,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""Send information about a venue.
Integrated with FourSquare.
See https://core.telegram.org/bots/api#sendvenue for details.
"""
return await self.api_request(
'sendVenue',
parameters=locals()
)
async def sendContact(self, chat_id, phone_number, first_name,
last_name=None,
vcard=None,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""Send a phone contact.
See https://core.telegram.org/bots/api#sendcontact for details.
"""
return await self.api_request(
'sendContact',
parameters=locals()
)
async def sendPoll(self, chat_id, question, options,
dummy=None,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""Send a native poll in a group, a supergroup or channel.
See https://core.telegram.org/bots/api#sendpoll for details.
"""
return await self.api_request(
'sendPoll',
parameters=locals()
)
async def sendChatAction(self, chat_id, action):
"""Fake a typing status or similar.
See https://core.telegram.org/bots/api#sendchataction for details.
"""
return await self.api_request(
'sendChatAction',
parameters=locals()
)
async def getUserProfilePhotos(self, user_id,
offset=None,
limit=None,):
"""Get a list of profile pictures for a user.
See https://core.telegram.org/bots/api#getuserprofilephotos
for details.
"""
return await self.api_request(
'getUserProfilePhotos',
parameters=locals()
)
async def getFile(self, file_id):
"""Get basic info about a file and prepare it for downloading.
For the moment, bots can download files of up to
20MB in size.
On success, a File object is returned. The file can then be downloaded
via the link https://api.telegram.org/file/bot<token>/<file_path>,
where <file_path> is taken from the response.
See https://core.telegram.org/bots/api#getfile for details.
"""
return await self.api_request(
'getFile',
parameters=locals()
)
async def kickChatMember(self, chat_id, user_id,
until_date=None):
"""Kick a user from a group, a supergroup or a channel.
In the case of supergroups and channels, the user will not be able to
return to the group on their own using invite links, etc., unless
unbanned first.
Note: In regular groups (non-supergroups), this method will only work
if the All Members Are Admins setting is off in the target group.
Otherwise members may only be removed by the group's creator or by
the member that added them.
See https://core.telegram.org/bots/api#kickchatmember for details.
"""
return await self.api_request(
'kickChatMember',
parameters=locals()
)
async def unbanChatMember(self, chat_id, user_id):
"""Unban a previously kicked user in a supergroup or channel.
The user will not return to the group or channel automatically, but
will be able to join via link, etc.
The bot must be an administrator for this to work.
Return True on success.
See https://core.telegram.org/bots/api#unbanchatmember for details.
"""
return await self.api_request(
'unbanChatMember',
parameters=locals()
)
async def restrictChatMember(self, chat_id, user_id,
until_date=None,
can_send_messages=None,
can_send_media_messages=None,
can_send_other_messages=None,
can_add_web_page_previews=None):
"""Restrict a user in a supergroup.
The bot must be an administrator in the supergroup for this to work
and must have the appropriate admin rights.
Pass True for all boolean parameters to lift restrictions from a
user.
Return True on success.
See https://core.telegram.org/bots/api#restrictchatmember for details.
"""
return await self.api_request(
'restrictChatMember',
parameters=locals()
)
async def promoteChatMember(self, chat_id, user_id,
can_change_info=None,
can_post_messages=None,
can_edit_messages=None,
can_delete_messages=None,
can_invite_users=None,
can_restrict_members=None,
can_pin_messages=None,
can_promote_members=None):
"""Promote or demote a user in a supergroup or a channel.
The bot must be an administrator in the chat for this to work and must
have the appropriate admin rights.
Pass False for all boolean parameters to demote a user.
Return True on success.
See https://core.telegram.org/bots/api#promotechatmember for details.
"""
return await self.api_request(
'promoteChatMember',
parameters=locals()
)
async def exportChatInviteLink(self, chat_id):
"""Generate a new invite link for a chat and revoke any active link.
The bot must be an administrator in the chat for this to work and must
have the appropriate admin rights.
Return the new invite link as String on success.
NOTE: to get the current invite link, use `getChat` method.
See https://core.telegram.org/bots/api#exportchatinvitelink
for details.
"""
return await self.api_request(
'exportChatInviteLink',
parameters=locals()
)
async def setChatPhoto(self, chat_id, photo):
"""Set a new profile photo for the chat.
Photos can't be changed for private chats.
`photo` must be an input file (file_id and urls are not allowed).
The bot must be an administrator in the chat for this to work and must
have the appropriate admin rights.
Return True on success.
See https://core.telegram.org/bots/api#setchatphoto for details.
"""
return await self.api_request(
'setChatPhoto',
parameters=locals()
)
async def deleteChatPhoto(self, chat_id):
"""Delete a chat photo.
Photos can't be changed for private chats.
The bot must be an administrator in the chat for this to work and must
have the appropriate admin rights.
Return True on success.
See https://core.telegram.org/bots/api#deletechatphoto for details.
"""
return await self.api_request(
'deleteChatPhoto',
parameters=locals()
)
async def setChatTitle(self, chat_id, title):
"""Change the title of a chat.
Titles can't be changed for private chats.
The bot must be an administrator in the chat for this to work and must
have the appropriate admin rights.
Return True on success.
See https://core.telegram.org/bots/api#setchattitle for details.
"""
return await self.api_request(
'setChatTitle',
parameters=locals()
)
async def setChatDescription(self, chat_id, description):
"""Change the description of a supergroup or a channel.
The bot must be an administrator in the chat for this to work and must
have the appropriate admin rights.
Return True on success.
See https://core.telegram.org/bots/api#setchatdescription for details.
"""
return await self.api_request(
'setChatDescription',
parameters=locals()
)
async def pinChatMessage(self, chat_id, message_id,
disable_notification=None):
"""Pin a message in a group, a supergroup, or a channel.
The bot must be an administrator in the chat for this to work and must
have the can_pin_messages admin right in the supergroup or
can_edit_messages admin right in the channel.
Return True on success.
See https://core.telegram.org/bots/api#pinchatmessage for details.
"""
return await self.api_request(
'pinChatMessage',
parameters=locals()
)
async def unpinChatMessage(self, chat_id):
"""Unpin a message in a group, a supergroup, or a channel.
The bot must be an administrator in the chat for this to work and must
have the can_pin_messages admin right in the supergroup or
can_edit_messages admin right in the channel.
Return True on success.
See https://core.telegram.org/bots/api#unpinchatmessage for details.
"""
return await self.api_request(
'unpinChatMessage',
parameters=locals()
)
async def leaveChat(self, chat_id):
"""Make the bot leave a group, supergroup or channel.
Return True on success.
See https://core.telegram.org/bots/api#leavechat for details.
"""
return await self.api_request(
'leaveChat',
parameters=locals()
)
async def getChat(self, chat_id):
"""Get up to date information about the chat.
Return a Chat object on success.
See https://core.telegram.org/bots/api#getchat for details.
"""
return await self.api_request(
'getChat',
parameters=locals()
)
async def getChatAdministrators(self, chat_id):
"""Get a list of administrators in a chat.
On success, return an Array of ChatMember objects that contains
information about all chat administrators except other bots.
If the chat is a group or a supergroup and no administrators were
appointed, only the creator will be returned.
See https://core.telegram.org/bots/api#getchatadministrators
for details.
"""
return await self.api_request(
'getChatAdministrators',
parameters=locals()
)
async def getChatMembersCount(self, chat_id):
"""Get the number of members in a chat.
Returns Int on success.
See https://core.telegram.org/bots/api#getchatmemberscount for details.
"""
return await self.api_request(
'getChatMembersCount',
parameters=locals()
)
async def getChatMember(self, chat_id, user_id):
"""Get information about a member of a chat.
Returns a ChatMember object on success.
See https://core.telegram.org/bots/api#getchatmember for details.
"""
return await self.api_request(
'getChatMember',
parameters=locals()
)
async def setChatStickerSet(self, chat_id, sticker_set_name):
"""Set a new group sticker set for a supergroup.
The bot must be an administrator in the chat for this to work and must
have the appropriate admin rights.
Use the field `can_set_sticker_set` optionally returned in getChat
requests to check if the bot can use this method.
Returns True on success.
See https://core.telegram.org/bots/api#setchatstickerset for details.
"""
return await self.api_request(
'setChatStickerSet',
parameters=locals()
)
async def deleteChatStickerSet(self, chat_id):
"""Delete a group sticker set from a supergroup.
The bot must be an administrator in the chat for this to work and must
have the appropriate admin rights.
Use the field `can_set_sticker_set` optionally returned in getChat
requests to check if the bot can use this method.
Returns True on success.
See https://core.telegram.org/bots/api#deletechatstickerset for details.
"""
return await self.api_request(
'deleteChatStickerSet',
parameters=locals()
)
async def answerCallbackQuery(self, callback_query_id,
text=None,
show_alert=None,
url=None,
cache_time=None):
"""Send answers to callback queries sent from inline keyboards.
The answer will be displayed to the user as a notification at the top
of the chat screen or as an alert.
On success, True is returned.
See https://core.telegram.org/bots/api#answercallbackquery for details.
"""
return await self.api_request(
'answerCallbackQuery',
parameters=locals()
)
async def editMessageText(self, text,
chat_id=None, message_id=None,
inline_message_id=None,
parse_mode=None,
disable_web_page_preview=None,
reply_markup=None):
"""Edit text and game messages.
On success, if edited message is sent by the bot, the edited Message
is returned, otherwise True is returned.
See https://core.telegram.org/bots/api#editmessagetext for details.
"""
return await self.api_request(
'editMessageText',
parameters=locals()
)
async def method_name(self, chat_id, method_name,
dummy=None,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""method_name.
See https://core.telegram.org/bots/api#method_name for details.
"""
return await self.api_request( return await self.api_request(
'method_name', 'method_name',
parameters=locals() parameters=locals()
) )
async def method_name( async def method_name(self, chat_id, method_name,
self, chat_id, reply_to_message_id=None, reply_markup=None dummy=None,
): disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""method_name.
See https://core.telegram.org/bots/api#method_name for details.
"""
return await self.api_request(
'method_name',
parameters=locals()
)
async def method_name(self, chat_id, method_name,
dummy=None,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""method_name.
See https://core.telegram.org/bots/api#method_name for details.
"""
return await self.api_request(
'method_name',
parameters=locals()
)
async def method_name(self, chat_id, method_name,
dummy=None,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""method_name.
See https://core.telegram.org/bots/api#method_name for details.
"""
return await self.api_request(
'method_name',
parameters=locals()
)
async def method_name(self, chat_id, method_name,
dummy=None,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""method_name.
See https://core.telegram.org/bots/api#method_name for details.
"""
return await self.api_request(
'method_name',
parameters=locals()
)
async def method_name(self, chat_id, method_name,
dummy=None,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""method_name.
See https://core.telegram.org/bots/api#method_name for details.
"""
return await self.api_request(
'method_name',
parameters=locals()
)
async def method_name(self, chat_id, method_name,
dummy=None,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""method_name.
See https://core.telegram.org/bots/api#method_name for details.
"""
return await self.api_request(
'method_name',
parameters=locals()
)
async def method_name(self, chat_id, method_name,
dummy=None,
disable_notification=None,
reply_to_message_id=None,
reply_markup=None):
"""method_name. """method_name.
See https://core.telegram.org/bots/api#method_name for details. See https://core.telegram.org/bots/api#method_name for details.
@ -609,19 +1187,14 @@ class Bot(TelegramBot):
async def route_update(self, update): async def route_update(self, update):
"""Pass `update` to proper method. """Pass `update` to proper method.
Work in progress: at the moment the update gets simply printed. Work in progress: at the moment the update gets simply printed and
echoed back in the same chat.
""" """
print(update) print(update)
await self.sendMessage( await self.sendMessage(
chat_id=update['message']['chat']['id'], chat_id=update['message']['chat']['id'],
text="Ciaone!" text=update['message']['text']
) )
with open('rrr.txt', 'r') as _file:
await self.sendDocument(
chat_id=update['message']['chat']['id'],
document=_file,
caption="Prova!"
)
return return
@classmethod @classmethod