def change_avatar_step1(bot, update, user_data):
user = get_user(update.effective_user, user_data)
reply_keyboard = []
for index, ava in enumerate(avatars):
button = "/avatar {} {}".format(index, ava)
button = emojize(button, use_aliases=True)
reply_keyboard.append(button)
text = '?????? ???????? {}'.format(get_avatar(user_data))
update.message.reply_text(text, reply_markup=ReplyKeyboardMarkup([reply_keyboard], resize_keyboard=True))
python类ReplyKeyboardMarkup()的实例源码
def start(bot, update):
hiKey = KeyboardButton("Hi", callback_data="Bonjour")
howRU = KeyboardButton("How are you?")
bye = KeyboardButton("Bye")
introduce = KeyboardButton("I'm Gutsy")
keyboard = [
[hiKey, howRU],
[bye, introduce]
]
reply_markup = ReplyKeyboardMarkup(keyboard)
update.message.reply_text('Please choose:', reply_markup=reply_markup)
def start(self, bot, update):
keyboardStr = [
["-", "?", "+"],
["?", " ", "?"],
["?", "?", "?"],
["STOP"],
]
headKeyboard = [
[" ", "?", " "],
["?", " ", "?"],
[" ", "?", " "],
["Paparazzi"],
]
gripperKeyboard = [
["Open Left", "Open Right"],
["Close Half Left", "Close Half Right"],
["Close Left", "Close Right"]
]
keyboard = self.createKeyboard(keyboardStr)
reply_markup = ReplyKeyboardMarkup(keyboard)
update.message.reply_text(
'Tap the arrows to move the PR2:', reply_markup=reply_markup)
def new_in_state_asked_vk_group_link(bot, update, users_state):
vk_url = update.message.text
vk_domain = vk_url.split('/')[-1]
users_state[update.message.from_user.id] = dict()
users_state[update.message.from_user.id]['vk_domain'] = vk_domain
update.message.reply_text('???????! ??????:')
update.message.reply_text('1. ???????? ????? ?????. ????? ???????????? ????????????')
keyboard = [['? ??????']]
update.message.reply_text('2. ???????? ????? ???? (@vk_channelify_bot) ? ?????????????? ??????',
reply_markup=ReplyKeyboardMarkup(keyboard, one_time_keyboard=True))
return ASKED_CHANNEL_ACCESS_IN_NEW
def filter_by_hashtag(bot, update, db, users_state):
user_id = update.message.from_user.id
users_state[user_id] = dict()
users_state[user_id]['channels'] = dict()
keyboard = []
keyboard_row = []
for channel in db.query(Channel).filter(Channel.owner_id == str(user_id)).order_by(Channel.created_at.desc()):
try:
channel_chat = bot.get_chat(chat_id=channel.channel_id)
users_state[user_id]['channels'][channel_chat.title] = channel.channel_id
keyboard_row.append(channel_chat.title)
if len(keyboard_row) == 2:
keyboard.append(keyboard_row)
keyboard_row = []
except telegram.TelegramError:
logger.warning('filter_by_hashtag: cannot get title of channel {}'.format(channel.channel_id))
traceback.print_exc()
if len(keyboard_row) != 0:
keyboard.append(keyboard_row)
update.message.reply_text('???????? ?????', reply_markup=ReplyKeyboardMarkup(keyboard, one_time_keyboard=True))
return ASKED_CHANNEL_ID_IN_FILTER_BY_HASHTAG
def discab_keyboard(bot, update):
"""
Command that shows keyboard of sections for:
discab_news, discabon and discaboff
"""
keys = [['News del Dipartimento'], ['Area Biotecnologie'], ['Area Medica'],
['Area Scienze Motorie'], ['Area Psicologia'], ['Chiudi']]
bot.sendMessage(update.message.chat_id,
'Scegli la sezione:',
reply_markup=telegram.ReplyKeyboardMarkup(
keys, one_time_keyboard=True))
return "discab"
def mesva_keyboard(bot, update):
"""
Command that shows keyboard of sections for:
mesva_news, mesvaon and mesvaoff
"""
keys = [['In Evidenza'], ['Area Medicina'], ['Area Scienze Ambientali'],
['Area Scienze Biologiche'], ['Chiudi']]
bot.sendMessage(update.message.chat_id,
'Scegli la sezione:',
reply_markup=telegram.ReplyKeyboardMarkup(
keys, one_time_keyboard=True))
return "mesva"
def univaq(bot, update):
"""
Command that shows keyboard of sections for:
inevidenza, ultimissime, univaqon, univaqoff
"""
keys = [['In Evidenza'], ['Ultimissime'], ['Chiudi']]
bot.sendMessage(update.message.chat_id,
'Scegli la sezione:',
reply_markup=telegram.ReplyKeyboardMarkup(
keys, one_time_keyboard=True))
return "univaq"
def section_keyboard(bot, update):
"""
Command that shows keyboard of departments for:
news, newson and newsoff
"""
keys = [['Univaq'], ['Disim'], ['Mesva'],
['Discab'], ['Chiudi']]
bot.sendMessage(update.message.chat_id,
'Scegli il dipartimento:',
reply_markup=telegram.ReplyKeyboardMarkup(
keys, one_time_keyboard=True))
return "department"
def feedback_command(bot, update):
"""Defining the command to ask for user's feedback"""
keys = [['Lascia un messaggio agli sviluppatori'], ['Chiudi']]
bot.sendMessage(update.message.chat_id,
'Cosa desideri fare?',
reply_markup=telegram.ReplyKeyboardMarkup(
keys, one_time_keyboard=True))
return "send_feedback"
def _convert_answer_part(self, answer_part):
if isinstance(answer_part, str):
return Message(answer_part)
if isinstance(answer_part, (collections.abc.Iterable, Keyboard)):
# ???????????
resize_keyboard = False
one_time_keyboard = True
if isinstance(answer_part, collections.abc.Iterable):
answer_part = list(answer_part)
else:
one_time_keyboard = answer_part.one_time_keyboard
resize_keyboard = answer_part.resize_keyboard
answer_part = answer_part.markup
if isinstance(answer_part[0], str):
# ???! ????????? ??? ?????????????? ??? ??????.
# ??????, ??? ???? ?????????? ??????????? -- ??? ???? ??????.
return ReplyKeyboardMarkup([answer_part], one_time_keyboard=one_time_keyboard,
resize_keyboard=resize_keyboard)
elif isinstance(answer_part[0], collections.abc.Iterable):
# ????????? ???????????
answer_part = list(map(list, answer_part))
if isinstance(answer_part[0][0], str):
# ???!
return ReplyKeyboardMarkup(answer_part, one_time_keyboard=one_time_keyboard,
resize_keyboard=resize_keyboard)
if isinstance(answer_part, Inline):
return answer_part.convert()
return answer_part
def new_alarm(self, bot, update):
keyboard = [[InlineKeyboardButton("Daily"),
InlineKeyboardButton("Weekday Only")],
[InlineKeyboardButton("Close")]]
reply_markup = ReplyKeyboardMarkup(keyboard, one_time_keyboard=True)
update.message.reply_text('Select type of alarm, or /cancel to cancel:', reply_markup=reply_markup)
return self.ALARM_TYPE
def set_timezone(self, bot, update):
keyboard = []
for continent in sorted(get_timezones().keys()):
keyboard.append([InlineKeyboardButton(continent)])
reply_markup = ReplyKeyboardMarkup(keyboard, one_time_keyboard=True)
update.message.reply_text('Please select a continent, or /cancel to cancel:', reply_markup=reply_markup)
return self.TIMEZONE_CONTINENT
def timezone_continent(self, bot, update):
reply = handle_cancel(update)
if reply is None:
keyboard = []
self.selected_continent = update.message.text
for continent in sorted(get_timezones()[self.selected_continent]):
keyboard.append([InlineKeyboardButton(continent)])
reply_markup = ReplyKeyboardMarkup(keyboard, one_time_keyboard=True)
update.message.reply_text('Please select a timezone, or /cancel to cancel:', reply_markup=reply_markup)
return self.TIMEZONE_TIME
return ConversationHandler.END
def chat(bot, update):
user = update.message.from_user
logger.info('chat - %s' % user)
update.message.reply_text(
"Sobre que quieres hablar?",
reply_markup=ReplyKeyboardMarkup(
GENRE_KEYBOARD,
one_time_keyboard=True,
resize_keyboard=True
)
)
return GENRE_SELECTOR
def search_song(bot, update):
user = update.message.from_user
song_name = update.message.text
logger.info('search_song for user %s and song name %s' % (user, song_name))
url = '{}/song/{}'
resp = requests.get(
url=url.format(API_SERVER, song_name)
)
if resp.status_code != 200 or not resp.json():
update.message.reply_text('Lo siento pero lo que estás buscando es demasiado raro incluso para Spotify')
return ConversationHandler.END
else:
song_list = json.loads(resp.content)
update.message.reply_text(
u"""{} (Popularidad% {})\nActividad: {}\nAlbum: {}\nArtistas: {}\n{}\n{}""".format(
song_list[0]['track_name'],
song_list[0]['track_popularity'],
song_list[0]['activity'],
song_list[0]['track_album_name'],
','.join(a['name'] for a in song_list[0]['artists']),
song_list[0]['thumb'],
song_list[0]['external_url'],
),
reply_markup=ReplyKeyboardMarkup(
SONG_KEYBOARD,
one_time_keyboard=True,
resize_keyboard=True
)
)
bot.song_cache = song_list[0]
return SONG_ACTION
def choose_activity(bot, update):
user = update.message.from_user
logger.info('choose_activity - %s' % user)
update.message.reply_text(
"Que tipo de playlist quieres?",
reply_markup=ReplyKeyboardMarkup(
ACTIVITY_KEYBOARD,
one_time_keyboard=True,
resize_keyboard=True
)
)
return ACTIVITY_SELECTOR
def train(bot, update):
user = update.message.from_user
logger.info('show_song_to_clasify %s' % user)
resp = requests.get(
url='{}/user_info/{}/'.format(API_SERVER, user.id)
)
if not resp.json():
update.message.reply_text(
'Sorry {}, but I can\'t do that. Please, use "connect" command'.format(user['first_name'])
)
else:
resp = requests.get(
url='{}/train/{}/'.format(API_SERVER, user.id)
)
song = resp.json()['song'] if 'song' in resp.json() else None
if song:
bot.song_cache = song
update.message.reply_text(
u"""
Choose one activity for this song:\n\n
Title: {}\n
Artist: {}\n
Album: {}\n
""".format(song[1], song[4], song[2]),
reply_markup=ReplyKeyboardMarkup(ACTIVITY_KEYBOARD, one_time_keyboard=True, resize_keyboard=True)
)
else:
update.message.reply_text("Server error. %s" % resp.json())
return SAVE_SONG
def save_classification(bot, update):
user = update.message.from_user
logger.info('save_classification(%s) %s - %s' % (user, bot.song_cache, update.message.text))
resp = requests.get(
url='{}/user_info/{}/'.format(API_SERVER, user.id)
)
if not resp.json():
update.message.reply_text(
'Sorry {}, but I can\'t do that. Please, use "connect" command'.format(user['first_name'])
)
else:
resp = requests.get(
url='{}/classify/{}/{}'.format(
API_SERVER,
bot.song_cache[0],
ACTIVITY_KEYBOARD[0].index(update.message.text)
)
)
result = resp.json()
resp = requests.get(
url='{}/stats/{}/'.format(
API_SERVER,
user.id
)
)
result['total'] = resp.json()['total']
result['classified'] = resp.json()['classified']
update.message.reply_text(
'Result: %s \n\n Statistics:\n %s' % (result, resp.json()),
reply_markup=ReplyKeyboardMarkup([[NAVIGATION_KEYBOARD[1]]], one_time_keyboard=True, resize_keyboard=True)
)
return SAVE_SONG
def key_ben(bot, update,chat_id):
keyboard = [
['While downloading','Other...']
]
reply_markup = ReplyKeyboardMarkup(
keyboard = keyboard,
resize_keyboard=True,
one_time_keyboard=True)
bot.sendMessage(chat_id=chat_id,
text="_When are you having your error?_ *(use the keyboard that appears just below)*",
parse_mode=telegram.ParseMode.MARKDOWN,
reply_markup=reply_markup)