def de_json(data): data = super(InputMessageContent, InputMessageContent).de_json(data) if not data: return None try: from telegram import InputTextMessageContent return InputTextMessageContent.de_json(data) except TypeError: pass try: from telegram import InputLocationMessageContent return InputLocationMessageContent.de_json(data) except TypeError: pass try: from telegram import InputVenueMessageContent return InputVenueMessageContent.de_json(data) except TypeError: pass try: from telegram import InputContactMessageContent return InputContactMessageContent.de_json(data) except TypeError: pass return None
def inline_caps(bot, update): query = update.inline_query.query if not query: return results = list() results.append( InlineQueryResultArticle( id=query.upper(), title='Caps', input_message_content=InputTextMessageContent(query.upper()) ) ) bot.answer_inline_query(update.inline_query.id, results)
def all_bot_results_article(lst, too_many_results): txt = messages.PROMOTION_MESSAGE + '\n\n' txt += "{} one of these {} bots:\n\n".format( messages.rand_call_to_action(), len(lst)) txt += '\n'.join([str(b) for b in lst]) return InlineQueryResultArticle( id=uuid4(), title='{} {} ʙᴏᴛ ʀᴇsᴜʟᴛs'.format(mdformat.smallcaps("Send"), len(lst)), input_message_content=InputTextMessageContent( message_text=txt[:4096], parse_mode=ParseMode.MARKDOWN) # description=b.description if b.description else b.name if b.name else None, # thumb_url='http://www.colorcombos.com/images/colors/FF0000.png' )
def inlinequery(bot, update): query = update.inline_query.query results = list() results.append(InlineQueryResultArticle(id=uuid4(), title="Caps", input_message_content=InputTextMessageContent( query.upper()))) results.append(InlineQueryResultArticle(id=uuid4(), title="Bold", input_message_content=InputTextMessageContent( "*%s*" % escape_markdown(query), parse_mode=ParseMode.MARKDOWN))) results.append(InlineQueryResultArticle(id=uuid4(), title="Italic", input_message_content=InputTextMessageContent( "_%s_" % escape_markdown(query), parse_mode=ParseMode.MARKDOWN))) update.inline_query.answer(results)
def inline_get_info(bot, update): query = update.inline_query.query if not query: return results = list() results.append( InlineQueryResultArticle( id=query.upper(), title='Check phone', input_message_content=InputTextMessageContent(get_phone_info(query), parse_mode="Markdown") ) ) bot.answer_inline_query(update.inline_query.id, results)
def handleInlineQuery(bot, update, user_data): inlineQuery = update.inline_query user = inlineQuery.from_user logger.info(inlineQuery) logger.info(user) surtext, sid = inlineQuery.query.split("-") s = getSurveyById(sid) if (s is None): logger.info("No survey found") else: if (s[1] == user.id): resultList = [] msgText = surveyText(s) msgText += '\n\nOptions:' so = getSurveyOptions(s) button_list = [] if (s[4] == 1): cols = 3 else: cols = 2 for opt in so: msgText += '''\n*%s*: %s yes, ''' % (opt.getText(), opt.getYes()) if (s[4] == 1): msgText += '''%s maybe, ''' % opt.getMaybe() msgText += '''%s no\n''' % opt.no button_list.append( InlineKeyboardButton("YES (%s)" % opt.getYes(), callback_data=('%s-%s-yes' % (s[0], opt.id)))) if (s[4] == 1): button_list.append( InlineKeyboardButton("MAYBE (%s)" % opt.getMaybe(), callback_data=('%s-%s-maybe' % (s[0], opt.id)))) button_list.append( InlineKeyboardButton("NO (%s)" % opt.getNo(), callback_data=('%s-%s-no' % (s[0], opt.id)))) resultList.append( InlineQueryResultArticle("survey-%s" % (sid, ), s[2], InputTextMessageContent( msgText, parse_mode=ParseMode.MARKDOWN), reply_markup=InlineKeyboardMarkup( build_menu(button_list, n_cols=cols)))) inlineQuery.answer(resultList)
def inlinequery(update, context): """Handle the inline query.""" query = update.inline_query.query.lower() if len(query) < 3: return books = {'14-15': '📒', '15-16': '📕', '16-17': '📗', '17-18': '📘', '18-19': '📙', '19-20': '📓', '20-21': '📔'} results = [] with open('kaiku.json', 'r') as file: accounts = json.load(file) for item in [x for x in accounts if query in x["name"].lower()]: codes = item["instances"][0]["code"] years = f"\nYears {item['instances'][0]['year']}" message = f"*{(item['name'])}*\n" summary = f"Period(s) {(item['period'])}\n\n" # add and hide a direct image link summary += "[\u200c](https://course-o-meter-images.netlify.com/img/" + item["id"] + ".jpg)" for thing in item["instances"]: summary += f"*{books[thing['year']]} {thing['year']}*\n" if thing['code'] not in codes: codes += f", {thing['code']}" if thing['year'] not in years: years += f", {thing['year']}" if "letter" in thing.keys(): summary += f"🏆: *{thing['letter']}* ({str(thing['grade'])})\n" else: summary += f"🏆: ({str(thing['grade'])})\n" summary += f"⏱: {'+' if thing['work'] > 0 else '' }{str(thing['work'])}%\n" summary += f"🗂: {str(thing['sampleSize'])} samples\n\n" summary += f"🌍: [View on Course-O-Meter](https://course-o-meter-dev.netlify.com/courses/{item['id']})" if "link" in item.keys(): summary += f"\n🏛: [View on POP](https://poprock.tut.fi/group/pop/opas/opintojaksot/-/opintojakso/2019-2020/{item['link']})" message += f"{codes}\n{summary}" description = codes + years results.append(InlineQueryResultArticle( id=uuid4(), title=item["name"] + ", period " + item["period"], description=description, thumb_url="https://course-o-meter-images.netlify.com/thumbnails/" + item["id"] + ".jpg", thumb_height=64, thumb_width=64, input_message_content=InputTextMessageContent( message, parse_mode=ParseMode.MARKDOWN ))) update.inline_query.answer(results)
def inline(bot, update): # Sólo procesaremos el inline cuando haya algún texto introducido query = update.inline_query.query if not query: return texto_inline = query resultados = list() # Texto que se enviará y se mostrará al usuario alternativa1_texto = 'Hola desde el bot de Bytelix, ' + texto_inline alternativa2_texto = 'Bienvenido, ' + texto_inline alternativa3_texto = '¿Conoces Bytelix, ' + texto_inline + '?' # Resultados que se mostrarán para elegir alternativa1 = InlineQueryResultArticle( id=hex(getrandbits(64))[2:], title=alternativa1_texto, input_message_content=InputTextMessageContent(alternativa1_texto)) alternativa2 = InlineQueryResultArticle( id=hex(getrandbits(64))[2:], title=alternativa2_texto, input_message_content=InputTextMessageContent(alternativa2_texto)) alternativa3 = InlineQueryResultArticle( id=hex(getrandbits(64))[2:], title=alternativa3_texto, input_message_content=InputTextMessageContent(alternativa3_texto)) # Añadimos los resultados que hemos creado a la lista de resultados resultados.append(alternativa1) resultados.append(alternativa2) resultados.append(alternativa3) # Y mostramos la lista al usuario bot.answerInlineQuery(update.inline_query.id, results=resultados)
def inline(bot, update): query = update.inline_query.query results = list() if not query: for movie in fetch.inTheater(): results.append( InlineQueryResultArticle( id=movie['id'], title=movie['title'], input_message_content=InputTextMessageContent( message_text='[' + movie['title'] + '](' + movie['alt'] + ')', parse_mode='Markdown'), thumb_url=movie['images']['large'])) else: books = fetch.getBook(query) movies = fetch.getMovie(query) for movie in movies: results.append( InlineQueryResultArticle( id=movie['id'], title=movie['title'], input_message_content=InputTextMessageContent( message_text='[' + movie['title'] + '](' + movie['alt'] + ')', parse_mode='Markdown'), thumb_url=movie['images']['large'])) for book in books: results.append( InlineQueryResultArticle( id=book['id'], title=book['title'], input_message_content=InputTextMessageContent( message_text='[' + book['title'] + '](' + book['alt'] + ')', parse_mode='Markdown'), thumb_url=book['images']['large'])) bot.answerInlineQuery(update.inline_query.id, results)
def inline_query(update, context): results = [ InlineQueryResultArticle( id=uuid4(), title="Mundo", thumb_url="https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/Erioll_world_2.svg/1024px-Erioll_world_2.svg.png", thumb_width="32", thumb_height="32", input_message_content=InputTextMessageContent(total())), InlineQueryResultArticle( id=uuid4(), title="Casos", input_message_content=InputTextMessageContent(casos())), InlineQueryResultArticle( id=uuid4(), title="Muertos", input_message_content=InputTextMessageContent(muertos())), InlineQueryResultArticle( id=uuid4(), title="Recuperados", input_message_content=InputTextMessageContent(recuperados())), InlineQueryResultPhoto( id=uuid4(), title="Mapa de Casos", caption="Mapa de Casos", description="Mapa de Casos", photo_url=url_from_name('mapa.jpg'), thumb_url='https://res.cloudinary.com/dlyc7rdxt/image/upload/ar_1:1,b_rgb:262c35,bo_5px_solid_rgb:ff0000,c_fill,g_auto,r_max,t_media_lib_thumb,w_100/v1584293147/coronavirus_w28z7e.jpg'), InlineQueryResultPhoto( id=uuid4(), title="Mapa de Muertes", caption="Mapa de Muertes", description="Mapa de Muertes", photo_url=url_from_name('muertes.jpg'), thumb_url='https://res.cloudinary.com/dlyc7rdxt/image/upload/ar_1:1,b_rgb:262c35,bo_5px_solid_rgb:ff0000,c_fill,g_auto,r_max,t_media_lib_thumb,w_100/v1584293147/coronavirus_w28z7e.jpg'), ] update.inline_query.answer(results)
def inline_caps(bot, update): from_user_id = update.inline_query.from_user.id # 检查是否为群成员 try: bot.get_chat_member(chat_id=GROUP_ID, user_id=from_user_id) except: return query = update.inline_query.query # recent messages if not query: keyword, page = None, 1 elif re.match(' *\* +(\d+)', query): keyword, page = None, int(re.match('\* +(\d+)', query).group(1)) # search messages else: re_match = re.match('(.*) +(\d+)', query) if re_match: keyword, page = re_match.group(1), int(re_match.group(2)) else: keyword, page = query, 1 messages, count = search_messages(keyword, page) results = [InlineQueryResultArticle( id='info', title='Total:{}. Page {} of {}'.format(count, page, math.ceil(count / SEARCH_PAGE_SIZE)), input_message_content=InputTextMessageContent('/help') )] for message in messages: results.append( InlineQueryResultArticle( id=message['id'], title='{}'.format(message['text'][:100]), description=message['date'].strftime("%Y-%m-%d").ljust(40) + message['user'], input_message_content=InputTextMessageContent('/locate {}'.format(message['id'])) ) ) bot.answer_inline_query(update.inline_query.id, results)
def test_answer_inline_query(self, monkeypatch, bot): # For now just test that our internals pass the correct data def test(_, url, data, *args, **kwargs): return data == {'cache_time': 300, 'results': [{'title': 'first', 'id': '11', 'type': 'article', 'input_message_content': {'message_text': 'first'}}, {'title': 'second', 'id': '12', 'type': 'article', 'input_message_content': {'message_text': 'second'}}], 'next_offset': '42', 'switch_pm_parameter': 'start_pm', 'inline_query_id': 1234, 'is_personal': True, 'switch_pm_text': 'switch pm'} monkeypatch.setattr('telegram.utils.request.Request.post', test) results = [InlineQueryResultArticle('11', 'first', InputTextMessageContent('first')), InlineQueryResultArticle('12', 'second', InputTextMessageContent('second'))] assert bot.answer_inline_query(1234, results=results, cache_time=300, is_personal=True, next_offset='42', switch_pm_text='switch pm', switch_pm_parameter='start_pm')
def inline_manips(r): if not ('<' in query and '>' in query): return None text = manip_manips(query) if text == query: return None desc = text r.append( InlineQueryResultArticle( id=uuid4(), title='Manips', description=desc, input_message_content=InputTextMessageContent( text, parse_mode=ParseMode.HTML)))
def inline_html_noprev(r): if not ('<a href' in query and '</a>' in query): return None text = query desc = text r.append( InlineQueryResultArticle( id=uuid4(), title='HTML (No Preview)', description=desc, input_message_content=InputTextMessageContent( text, parse_mode=ParseMode.HTML, disable_web_page_preview=True)))
def mostrar_juegos_inline(self, update, context): resultados = [] for juego in self.decalogo_de_juegos.values(): if juego.es_inline(): resultados.append((InlineQueryResultArticle( id=uuid4(), title=juego.nombre(), input_message_content=InputTextMessageContent('Vamos a jugar a {}'.format(juego.nombre())), reply_markup=juego.generar_markup(update, context)))) id_usuario = self.generar_id_usuario(update) self.datos_usuarios[str(id_usuario)]['juego_actual'] = 'TaTeTi_MultiPlayer' self.data_manager.save_info(self.datos_usuarios) update.inline_query.answer(resultados)
def inlinef2p(bot, update): query = update.inline_query.query if not query: return results = [] for first, second in f2p_list(query)[0]: results.append( InlineQueryResultArticle( id = id_generator(), title = first, input_message_content = InputTextMessageContent(first) ) ) bot.answer_inline_query(update.inline_query.id, results)
class TestInlineQueryResultCachedSticker(object): id = 'id' type = 'sticker' sticker_file_id = 'sticker file id' input_message_content = InputTextMessageContent('input_message_content') reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton('reply_markup')]]) def test_expected_values(self, inline_query_result_cached_sticker): assert inline_query_result_cached_sticker.type == self.type assert inline_query_result_cached_sticker.id == self.id assert inline_query_result_cached_sticker.sticker_file_id == self.sticker_file_id assert inline_query_result_cached_sticker.input_message_content.to_dict() == \ self.input_message_content.to_dict() assert inline_query_result_cached_sticker.reply_markup.to_dict() == \ self.reply_markup.to_dict() def test_to_dict(self, inline_query_result_cached_sticker): inline_query_result_cached_sticker_dict = inline_query_result_cached_sticker.to_dict() assert isinstance(inline_query_result_cached_sticker_dict, dict) assert inline_query_result_cached_sticker_dict['type'] == \ inline_query_result_cached_sticker.type assert inline_query_result_cached_sticker_dict['id'] == \ inline_query_result_cached_sticker.id assert inline_query_result_cached_sticker_dict['sticker_file_id'] == \ inline_query_result_cached_sticker.sticker_file_id assert inline_query_result_cached_sticker_dict['input_message_content'] == \ inline_query_result_cached_sticker.input_message_content.to_dict() assert inline_query_result_cached_sticker_dict['reply_markup'] == \ inline_query_result_cached_sticker.reply_markup.to_dict() def test_equality(self): a = InlineQueryResultCachedSticker(self.id, self.sticker_file_id) b = InlineQueryResultCachedSticker(self.id, self.sticker_file_id) c = InlineQueryResultCachedSticker(self.id, '') d = InlineQueryResultCachedSticker('', self.sticker_file_id) e = InlineQueryResultCachedVoice(self.id, '', '') assert a == b assert hash(a) == hash(b) assert a is not b assert a == c assert hash(a) == hash(c) assert a != d assert hash(a) != hash(d) assert a != e assert hash(a) != hash(e)
def generate_results(meanings, defs_urls): results = [] if meanings <= 0: results.append(InlineQueryResultArticle( id=0, title="DIEC", description="Enllaç a la web del DIEC.", thumb_url="https://imatges.vilaweb.cat/catalunyanord/wp-content/uploads/2015/09/logo-iec-300x270.jpg", input_message_content=InputTextMessageContent('<a href="https://dlc.iec.cat">Accedeix al DIEC</a>', parse_mode='HTML'))) else: cont = 1 for defi_url in defs_urls: output = get_definition(defi_url) inici_def = output.find("----") results.append(InlineQueryResultArticle( id=cont, title=output[:inici_def], description=output[inici_def+8:], thumb_url="https://imatges.vilaweb.cat/catalunyanord/wp-content/uploads/2015/09/logo-iec-300x270.jpg", input_message_content=InputTextMessageContent(output, parse_mode=ParseMode.MARKDOWN))) cont += cont return results
def inline_trans(update, context): query = update.inline_query.query if not query: return results = list() results.append( InlineQueryResultArticle( id=query, title="Trans", description="EN->RU", input_message_content=InputTextMessageContent( query.translate(LAYOUT)), )) context.bot.answer_inline_query(update.inline_query.id, results)
def inlinequery(update, context): """Handle the inline query.""" query = update.inline_query.query results = [ InlineQueryResultArticle( id=uuid4(), title="大写", input_message_content=InputTextMessageContent( query.upper())), InlineQueryResultArticle( id=uuid4(), title="粗体", input_message_content=InputTextMessageContent( "*{}*".format(escape_markdown(query)), parse_mode=ParseMode.MARKDOWN)), InlineQueryResultArticle( id=uuid4(), title="斜体", input_message_content=InputTextMessageContent( "_{}_".format(escape_markdown(query)), parse_mode=ParseMode.MARKDOWN))] update.inline_query.answer(results)
def inline(bot, update): query = update.inline_query.query if not query: return session_id = update.inline_query.from_user.id dialogflow_reply = dialogflow_text_request(query, session_id) reply = list() reply.append( InlineQueryResultArticle( id=uuid.uuid4(), title=query.capitalize(), input_message_content=InputTextMessageContent(dialogflow_reply), description=dialogflow_reply)) bot.answer_inline_query(update.inline_query.id, reply)
def article(title='', description='', message_text='', key=None, reply_markup=None): return InlineQueryResultArticle( id=key or uuid4(), title=title, description=description, input_message_content=InputTextMessageContent( message_text=message_text, parse_mode=ParseMode.HTML, disable_web_page_preview=True), reply_markup=reply_markup)
def inlinequery(bot, update): query = update.inline_query.query o = execute.bash(query, update, direct=False) results = list() results.append( InlineQueryResultArticle(id=uuid4(), title=query, description=o, input_message_content=InputTextMessageContent( '*{0}*\n\n{1}'.format(query, o), parse_mode="Markdown"))) bot.answerInlineQuery(update.inline_query.id, results=results, cache_time=10)
def test_equality(self): a = InputInvoiceMessageContent( self.title, self.description, self.payload, self.provider_token, self.currency, self.prices, ) b = InputInvoiceMessageContent( self.title, self.description, self.payload, self.provider_token, self.currency, self.prices, max_tip_amount=100, provider_data='foobar', ) c = InputInvoiceMessageContent( self.title, self.description, self.payload, self.provider_token, self.currency, # the first prices amount & the second lebal changed [LabeledPrice('label1', 24), LabeledPrice('label22', 314)], ) d = InputInvoiceMessageContent( self.title, self.description, 'different_payload', self.provider_token, self.currency, self.prices, ) e = InputTextMessageContent('text') assert a == b assert hash(a) == hash(b) assert a != c assert hash(a) != hash(c) assert a != d assert hash(a) != hash(d) assert a != e assert hash(a) != hash(e)
def add_draw(player, results): """Add option to draw""" n = player.game.draw_counter or 1 results.append( Sticker( "draw", sticker_file_id=c.STICKERS['option_draw'], input_message_content= InputTextMessageContent(__('Drawing {number} card', 'Drawing {number} cards', n, multi=player.game.translate) .format(number=n)) ) )
def category_article(cat): cat_bots = Bot.of_category_without_new(cat) txt = messages.PROMOTION_MESSAGE + '\n\n' txt += "There are *{}* bots in the category *{}*:\n\n".format( len(cat_bots), str(cat)) txt += '\n'.join([str(b) for b in cat_bots]) return InlineQueryResultArticle( id=uuid4(), title=emoji.emojize(cat.emojis, use_aliases=True) + cat.name, input_message_content=InputTextMessageContent( message_text=txt, parse_mode=ParseMode.MARKDOWN), description=cat.extra, # thumb_url='https://pichoster.net/images/2017/03/13/cfa5e29e29e772373242bc177a9e5479.jpg' )
def inline_user(update, context): query = update.inline_query.query getString = "https://api.github.com/users/{}".format(query) print(getString) req = urllib.request.urlopen(getString) req = json.loads(req.read()) results = list() results.append( InlineQueryResultArticle(id=req['id'], title=req['login'], input_message_content=InputTextMessageContent( req['html_url']))) context.bot.answer_inline_query(update.inline_query.id, results)
def genstats(update, context): query = update.inline_query.query if not query: return results = list() statsString = required_stats(query) results.append( InlineQueryResultArticle( id=query.upper(), title='Weebo Meter', input_message_content=InputTextMessageContent(statsString) ) ) context.bot.answer_inline_query(update.inline_query.id, results)
def color_inline_query(bot, update): query = update.inline_query.query color = query.split("color")[1].strip() if color: hex_color = find_hex(color) msg = InputTextMessageContent(message_text=hex_color) results = [InlineQueryResultArticle(type='article', id=hex_color, title=color.capitalize(), thumb_url='http://img.dummy-image-generator.com/_mono/dummy-200x200-color{0}-plain.jpg'.format(hex_color), input_message_content=msg)] bot.answerInlineQuery(update.inline_query.id, results=results) else: results = [InlineQueryResultPhoto(type='photo', id=k, photo_url='http://img.dummy-image-generator.com/_mono/dummy-200x200-color{0}-plain.jpg'.format(str(k)), thumb_url='http://img.dummy-image-generator.com/_mono/dummy-200x200-color{0}-plain.jpg'.format(str(k)), photo_height=100, photo_width=100, input_message_content=InputTextMessageContent(message_text='{0}'.format(str(k)))) for k in ('EF5350', 'F44336', 'E53935', 'EC407A', 'E91E63', 'D81B60', 'AB47BC', '9C27B0', '8E24AA', '7E57C2', '673AB7', '5E35B1', '5C6BC0', '3F51B5', '3949AB','42A5F5','2196F3','1E88E5','26A69A','009688','00897B','81C784','66BB6A','4CAF50','9CCC65','8BC34A','7CB342','FFEE58','FFEB3B','FDD835','FF7043','FF5722','F4511E','8D6E63','795548','6D4C41','BDBDBD','9E9E9E','757575','90A4AE','78909C','607D8B')] bot.answerInlineQuery(update.inline_query.id, results=results)
def inlinequery(update: Update, context: CallbackContext) -> None: """Handle the inline query.""" query = update.inline_query.query results = [ InlineQueryResultArticle(id=uuid4(), title="Caps", input_message_content=InputTextMessageContent( query.upper())), InlineQueryResultArticle( id=uuid4(), title="Bold", input_message_content=InputTextMessageContent( f"*{escape_markdown(query)}*", parse_mode=ParseMode.MARKDOWN), ), InlineQueryResultArticle( id=uuid4(), title="Italic", input_message_content=InputTextMessageContent( f"_{escape_markdown(query)}_", parse_mode=ParseMode.MARKDOWN), ), ] update.inline_query.answer(results)
def article(title="", description="", message_text="", thumb_url=None, reply_markup=None): return InlineQueryResultArticle( id=uuid4(), title=title, description=description, thumb_url=thumb_url, input_message_content=InputTextMessageContent( message_text=message_text, disable_web_page_preview=False), reply_markup=reply_markup, )