mirror of
https://github.com/python-telegram-bot/python-telegram-bot.git
synced 2025-03-16 12:25:45 +01:00
More refactoring and docstrings #232
This commit is contained in:
parent
ba7e1cada7
commit
bb36c725af
7 changed files with 97 additions and 46 deletions
|
@ -20,11 +20,11 @@
|
|||
|
||||
"""This module contains a object that represents a Telegram Bot."""
|
||||
|
||||
import functools
|
||||
import logging
|
||||
import functools
|
||||
|
||||
from telegram import (User, Message, Update, UserProfilePhotos, File,
|
||||
ReplyMarkup, TelegramObject, NullHandler)
|
||||
from telegram import User, Message, Update, UserProfilePhotos, File, \
|
||||
ReplyMarkup, TelegramObject, NullHandler
|
||||
from telegram.utils import request
|
||||
from telegram.utils.validate import validate_token
|
||||
|
||||
|
@ -57,14 +57,14 @@ class Bot(TelegramObject):
|
|||
self.token = validate_token(token)
|
||||
|
||||
if not base_url:
|
||||
self.base_url = 'https://api.telegram.org/bot%s' % \
|
||||
self.token
|
||||
self.base_url = 'https://api.telegram.org/bot{}'.format(
|
||||
self.token)
|
||||
else:
|
||||
self.base_url = base_url + self.token
|
||||
|
||||
if not base_file_url:
|
||||
self.base_file_url = 'https://api.telegram.org/file/bot%s' % \
|
||||
self.token
|
||||
self.base_file_url = 'https://api.telegram.org/file/bot{}'.format(
|
||||
self.token)
|
||||
else:
|
||||
self.base_file_url = base_file_url + self.token
|
||||
|
||||
|
@ -105,7 +105,7 @@ class Bot(TelegramObject):
|
|||
|
||||
@property
|
||||
def name(self):
|
||||
return '@%s' % self.username
|
||||
return '@{}'.format(self.username)
|
||||
|
||||
def log(func):
|
||||
logger = logging.getLogger(func.__module__)
|
||||
|
@ -165,7 +165,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/getMe' % self.base_url
|
||||
url = '{}/getMe'.format(self.base_url)
|
||||
|
||||
result = request.get(url)
|
||||
|
||||
|
@ -222,7 +222,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/sendMessage' % self.base_url
|
||||
url = '{}/sendMessage'.format(self.base_url)
|
||||
|
||||
data = {'chat_id': chat_id,
|
||||
'text': text}
|
||||
|
@ -272,7 +272,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/forwardMessage' % self.base_url
|
||||
url = '{}/forwardMessage'.format(self.base_url)
|
||||
|
||||
data = {}
|
||||
|
||||
|
@ -331,7 +331,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/sendPhoto' % self.base_url
|
||||
url = '{}/sendPhoto'.format(self.base_url)
|
||||
|
||||
data = {'chat_id': chat_id,
|
||||
'photo': photo}
|
||||
|
@ -401,7 +401,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/sendAudio' % self.base_url
|
||||
url = '{}/sendAudio'.format(self.base_url)
|
||||
|
||||
data = {'chat_id': chat_id,
|
||||
'audio': audio}
|
||||
|
@ -461,7 +461,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/sendDocument' % self.base_url
|
||||
url = '{}/sendDocument'.format(self.base_url)
|
||||
|
||||
data = {'chat_id': chat_id,
|
||||
'document': document}
|
||||
|
@ -513,7 +513,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/sendSticker' % self.base_url
|
||||
url = '{}/sendSticker'.format(self.base_url)
|
||||
|
||||
data = {'chat_id': chat_id,
|
||||
'sticker': sticker}
|
||||
|
@ -570,7 +570,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/sendVideo' % self.base_url
|
||||
url = '{}/sendVideo'.format(self.base_url)
|
||||
|
||||
data = {'chat_id': chat_id,
|
||||
'video': video}
|
||||
|
@ -632,7 +632,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/sendVoice' % self.base_url
|
||||
url = '{}/sendVoice'.format(self.base_url)
|
||||
|
||||
data = {'chat_id': chat_id,
|
||||
'voice': voice}
|
||||
|
@ -685,7 +685,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/sendLocation' % self.base_url
|
||||
url = '{}/sendLocation'.format(self.base_url)
|
||||
|
||||
data = {'chat_id': chat_id,
|
||||
'latitude': latitude,
|
||||
|
@ -747,7 +747,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/sendVenue' % self.base_url
|
||||
url = '{}/sendVenue'.format(self.base_url)
|
||||
|
||||
data = {'chat_id': chat_id,
|
||||
'latitude': latitude,
|
||||
|
@ -808,7 +808,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/sendContact' % self.base_url
|
||||
url = '{}/sendContact'.format(self.base_url)
|
||||
|
||||
data = {'chat_id': chat_id,
|
||||
'phone_number': phone_number,
|
||||
|
@ -843,7 +843,7 @@ class Bot(TelegramObject):
|
|||
- ChatAction.FIND_LOCATION for location data.
|
||||
"""
|
||||
|
||||
url = '%s/sendChatAction' % self.base_url
|
||||
url = '{}/sendChatAction'.format(self.base_url)
|
||||
|
||||
data = {'chat_id': chat_id,
|
||||
'action': action}
|
||||
|
@ -892,7 +892,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/answerInlineQuery' % self.base_url
|
||||
url = '{}/answerInlineQuery'.format(self.base_url)
|
||||
|
||||
results = [res.to_dict() for res in results]
|
||||
|
||||
|
@ -940,7 +940,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/getUserProfilePhotos' % self.base_url
|
||||
url = '{}/getUserProfilePhotos'.format(self.base_url)
|
||||
|
||||
data = {'user_id': user_id}
|
||||
|
||||
|
@ -973,7 +973,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/getFile' % self.base_url
|
||||
url = '{}/getFile'.format(self.base_url)
|
||||
|
||||
data = {'file_id': file_id}
|
||||
|
||||
|
@ -1009,7 +1009,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/kickChatMember' % self.base_url
|
||||
url = '{}/kickChatMember'.format(self.base_url)
|
||||
|
||||
data = {'chat_id': chat_id,
|
||||
'user_id': user_id}
|
||||
|
@ -1042,7 +1042,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/unbanChatMember' % self.base_url
|
||||
url = '{}/unbanChatMember'.format(self.base_url)
|
||||
|
||||
data = {'chat_id': chat_id,
|
||||
'user_id': user_id}
|
||||
|
@ -1077,7 +1077,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/answerCallbackQuery' % self.base_url
|
||||
url = '{}/answerCallbackQuery'.format(self.base_url)
|
||||
|
||||
data = {'callback_query_id': callback_query_id}
|
||||
|
||||
|
@ -1133,7 +1133,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/editMessageText' % self.base_url
|
||||
url = '{}/editMessageText'.format(self.base_url)
|
||||
|
||||
data = {'text': text}
|
||||
|
||||
|
@ -1199,7 +1199,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/editMessageCaption' % self.base_url
|
||||
url = '{}/editMessageCaption'.format(self.base_url)
|
||||
|
||||
data = {}
|
||||
|
||||
|
@ -1254,7 +1254,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/editMessageReplyMarkup' % self.base_url
|
||||
url = '{}/editMessageReplyMarkup'.format(self.base_url)
|
||||
|
||||
data = {}
|
||||
|
||||
|
@ -1303,7 +1303,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/getUpdates' % self.base_url
|
||||
url = '{}/getUpdates'.format(self.base_url)
|
||||
|
||||
data = {}
|
||||
|
||||
|
@ -1347,7 +1347,7 @@ class Bot(TelegramObject):
|
|||
|
||||
"""
|
||||
|
||||
url = '%s/setWebhook' % self.base_url
|
||||
url = '{}/setWebhook'.format(self.base_url)
|
||||
|
||||
data = {}
|
||||
|
||||
|
@ -1378,4 +1378,5 @@ class Bot(TelegramObject):
|
|||
|
||||
def __reduce__(self):
|
||||
return (self.__class__, (self.token,
|
||||
self.base_url.replace(self.token, '')))
|
||||
self.base_url.replace(self.token, ''),
|
||||
self.base_file_url.replace(self.token, '')))
|
||||
|
|
|
@ -24,20 +24,35 @@ from telegram import TelegramObject
|
|||
|
||||
|
||||
class InlineKeyboardButton(TelegramObject):
|
||||
"""This object represents a Telegram InlineKeyboardButton."""
|
||||
"""This object represents a Telegram InlineKeyboardButton.
|
||||
|
||||
Attributes:
|
||||
text (str):
|
||||
url (str):
|
||||
callback_data (str):
|
||||
switch_inline_query (str):
|
||||
|
||||
Args:
|
||||
text (str):
|
||||
**kwargs: Arbitrary keyword arguments.
|
||||
|
||||
Keyword Args:
|
||||
url (Optional[str]):
|
||||
callback_data (Optional[str]):
|
||||
switch_inline_query (Optional[str]):
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self,
|
||||
text,
|
||||
url=None,
|
||||
callback_data=None,
|
||||
switch_inline_query=None):
|
||||
**kwargs):
|
||||
# Required
|
||||
self.text = text
|
||||
|
||||
# Optionals
|
||||
self.url = url
|
||||
self.callback_data = callback_data
|
||||
self.switch_inline_query = switch_inline_query
|
||||
self.url = kwargs.get('url', '')
|
||||
self.callback_data = kwargs.get('callback_data', '')
|
||||
self.switch_inline_query = kwargs.get('switch_inline_query', '')
|
||||
|
||||
@staticmethod
|
||||
def de_json(data):
|
||||
|
|
|
@ -24,7 +24,15 @@ from telegram import ReplyMarkup, InlineKeyboardButton
|
|||
|
||||
|
||||
class InlineKeyboardMarkup(ReplyMarkup):
|
||||
"""This object represents a Telegram InlineKeyboardMarkup."""
|
||||
"""This object represents a Telegram InlineKeyboardMarkup.
|
||||
|
||||
Attributes:
|
||||
inline_keyboard (List[List[:class:`telegram.InlineKeyboardMarkup`]]):
|
||||
|
||||
Args:
|
||||
inline_keyboard (List[List[:class:`telegram.InlineKeyboardMarkup`]]):
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self,
|
||||
inline_keyboard):
|
||||
|
|
|
@ -30,8 +30,8 @@ class InlineQueryResultArticle(InlineQueryResult):
|
|||
Attributes:
|
||||
id (str):
|
||||
title (str):
|
||||
input_message_content (telegram.InputMessageContent):
|
||||
reply_markup (telegram.ReplyMarkup):
|
||||
input_message_content (:class:`telegram.InputMessageContent`):
|
||||
reply_markup (:class:`telegram.ReplyMarkup`):
|
||||
url (str):
|
||||
hide_url (bool):
|
||||
description (str):
|
||||
|
@ -42,7 +42,7 @@ class InlineQueryResultArticle(InlineQueryResult):
|
|||
Args:
|
||||
id (str): Unique identifier for this result, 1-64 Bytes
|
||||
title (str):
|
||||
reply_markup (telegram.ReplyMarkup):
|
||||
reply_markup (:class:`telegram.ReplyMarkup`):
|
||||
|
||||
Keyword Args:
|
||||
url (Optional[str]):
|
||||
|
|
|
@ -25,6 +25,32 @@ from telegram import InlineQueryResult, InlineKeyboardMarkup, \
|
|||
|
||||
|
||||
class InlineQueryResultAudio(InlineQueryResult):
|
||||
"""Represents a link to an mp3 audio file. By default, this audio file will
|
||||
be sent by the user. Alternatively, you can use input_message_content to
|
||||
send a message with the specified content instead of the audio.
|
||||
|
||||
Attributes:
|
||||
id (str):
|
||||
audio_url (str):
|
||||
title (str):
|
||||
performer (Optional[str]):
|
||||
audio_duration (Optional[str]):
|
||||
reply_markup (Optional[:class:`telegram.InlineKeyboardMarkup`]):
|
||||
input_message_content (Optional[
|
||||
:class:`telegram.input_message_content`]):
|
||||
|
||||
Args:
|
||||
audio_url (str):
|
||||
title (str):
|
||||
**kwargs: Arbitrary keyword arguments.
|
||||
|
||||
Keyword Args:
|
||||
performer (Optional[str]):
|
||||
audio_duration (Optional[str]):
|
||||
reply_markup (Optional[:class:`telegram.InlineKeyboardMarkup`]):
|
||||
input_message_content (Optional[
|
||||
:class:`telegram.input_message_content`]):
|
||||
"""
|
||||
def __init__(self,
|
||||
id,
|
||||
audio_url,
|
||||
|
|
|
@ -186,8 +186,9 @@ class BotTest(BaseTest, unittest.TestCase):
|
|||
def testInvalidSrvResp(self):
|
||||
with self.assertRaisesRegexp(telegram.TelegramError, 'Invalid server response'):
|
||||
# bypass the valid token check
|
||||
bot_cls = type('bot_cls', (telegram.Bot, ), {'_valid_token': lambda self, token: token})
|
||||
bot = bot_cls('12')
|
||||
bot = telegram.Bot.__new__(telegram.Bot)
|
||||
bot.base_url = 'https://api.telegram.org/bot{}'.format('12')
|
||||
|
||||
bot.getMe()
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue