From 0b13dc2444610ea53f2613f54e6a5f153599d7dc Mon Sep 17 00:00:00 2001 From: Ecron Date: Tue, 17 Jan 2017 00:27:00 +0100 Subject: [PATCH 1/2] Proposal to send posts to a channel Proposal to send posts directly to a channel when tapping an inline button. --- modules/commands.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/commands.py b/modules/commands.py index da7cf55..49942aa 100644 --- a/modules/commands.py +++ b/modules/commands.py @@ -1363,21 +1363,22 @@ def create_event(self, bot, update, event): self.store.insert_event(event) self.store.remove_draft(update.message.from_user.id) - keyboard = [[InlineKeyboardButton(text="Envia la publicació", switch_inline_query=event['name'])], []] + keyboard = [[InlineKeyboardButton(text="Envia la publicació", callback_query=event['name'])], []] if event['type'] == 'Paquets de llengua': if event['android'] != 'NOT' or event['ios'] != 'NOT' or event['tdesktop'] != 'NOT': bot.sendMessage( update.message.chat_id, - text="S'ha acabat l'actualització dels paquets de llengua", + text="S'ha acabat l'actualització dels paquets de llengua.", reply_markup=ReplyKeyboardHide() ) bot.sendMessage( update.message.chat_id, - text="S'ha creat la publicació", - reply_markup=InlineKeyboardMarkup(inline_keyboard=keyboard), + text="S'ha creat la publicació, que es mostrarà així al canal:\n\n"+create_event_message(event, user)+"\n\nEn prèmer el botó _Envia la publicació_, aquesta s'enviarà al canal. *Reviseu que està tot bé abans d'enviar-la!*", + parse_mode: "Markdown", + reply_markup=InlineKeyboardMarkup(inline_keyboard=keyboard), ) - + #Restaria per introduir el codi del callback_query que fa que s'envie el missatge al canal. Això és el que no sé fer... elif event['type'] == 'Projecte': bot.sendMessage( update.message.chat_id, From 0c03228318ef32afbcd51c2598e51fb87d56af3f Mon Sep 17 00:00:00 2001 From: Ecron Date: Mon, 23 Jan 2017 23:13:54 +0100 Subject: [PATCH 2/2] Function answering the callback_query MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit He afegit una funció que respon al callback_query, i he modificat tots els missatges que s'envien en finalitzar la creació d'un esdeveniment. Resta per saber com fer per que trobe la funció `create_event_message`, que es troba a un altre mòdul. --- modules/commands.py | 48 ++++++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/modules/commands.py b/modules/commands.py index 49942aa..0500869 100644 --- a/modules/commands.py +++ b/modules/commands.py @@ -288,6 +288,7 @@ def __init__(self): CommandHandler('skip', self.skip_command), CommandHandler('cancel', self.cancel_command), CommandHandler('help', help_command), + CallbackQueryHandler(self.enviaAlCanal), MessageHandler([Filters.text,Filters.document], self.message) ] self.store = TinyDBStore() @@ -1371,32 +1372,51 @@ def create_event(self, bot, update, event): update.message.chat_id, text="S'ha acabat l'actualització dels paquets de llengua.", reply_markup=ReplyKeyboardHide() - ) + ) bot.sendMessage( - update.message.chat_id, - text="S'ha creat la publicació, que es mostrarà així al canal:\n\n"+create_event_message(event, user)+"\n\nEn prèmer el botó _Envia la publicació_, aquesta s'enviarà al canal. *Reviseu que està tot bé abans d'enviar-la!*", - parse_mode: "Markdown", - reply_markup=InlineKeyboardMarkup(inline_keyboard=keyboard), + update.message.chat_id, + text="S'ha creat la publicació, que es mostrarà així al canal:\n\n"+create_event_message(event, user)+"\n\nEn prèmer el botó _Envia la publicació_, aquesta s'enviarà al canal. *Reviseu que està tot bé abans d'enviar-la!*", + parse_mode: "Markdown", + reply_markup=InlineKeyboardMarkup(inline_keyboard=keyboard), ) - #Restaria per introduir el codi del callback_query que fa que s'envie el missatge al canal. Això és el que no sé fer... + elif event['type'] == 'Projecte': bot.sendMessage( update.message.chat_id, text="Ja podeu presentar el projecte.", reply_markup=ReplyKeyboardHide() - ) + ) bot.sendMessage( - update.message.chat_id, - text="S'ha creat la publicació", - reply_markup=InlineKeyboardMarkup(inline_keyboard=keyboard), + update.message.chat_id, + text="S'ha creat la publicació, que es mostrarà així al canal:\n\n"+create_event_message(event, user)+"\n\nEn prèmer el botó _Envia la publicació_, aquesta s'enviarà al canal. *Reviseu que està tot bé abans d'enviar-la!*", + parse_mode: "Markdown", + reply_markup=InlineKeyboardMarkup(inline_keyboard=keyboard), ) - + else: bot.sendMessage( - update.message.chat_id, - text="S'ha creat la publicació", - reply_markup=InlineKeyboardMarkup(inline_keyboard=keyboard), + update.message.chat_id, + text="S'ha creat la publicació, que es mostrarà així al canal:\n\n"+create_event_message(event, user)+"\n\nEn prèmer el botó _Envia la publicació_, aquesta s'enviarà al canal. *Reviseu que està tot bé abans d'enviar-la!*", + parse_mode: "Markdown", + reply_markup=InlineKeyboardMarkup(inline_keyboard=keyboard), ) + def enviaAlCanal(self, bot, update): + if update.callback_query: + query = update.callback_query + data = query.data + if data == event['name']: + bot.sendMessage( + channel_ID, + text=create_event_message(event, user), + parse_mode: "Markdown", + ) + else: + bot.sendMessage( + update.message.chat_id, + text="S'ha produit un error. Sembla que no ha entrat cap `callback_query`.", + parse_mode: "Markdown", + ) + def get_handlers(self): return self.handlers