def __init__(self, token, owner_id): self._owner_id = owner_id self._seen = set() self._store = UnreadStore() super(ChatBox, self).__init__(token, [ # Here is a delegate to specially handle owner commands. pave_event_space()( per_chat_id_in([owner_id]), create_open, OwnerHandler, self._store, timeout=20), # Only one MessageSaver is ever spawned for entire application. (per_application(), create_open(MessageSaver, self._store, exclude=[owner_id])), # For senders never seen before, send him a welcome message. (self._is_newcomer, call(self._send_welcome)), ])
else: await self.bot.answerCallbackQuery( query_id, text='Ok. But I am going to keep asking.') await self._cancel_last() await self._propose() async def on__idle(self, event): await self.sender.sendMessage( 'I know you may need a little time. I will always be here for you.' ) self.close() def on_close(self, ex): # Save to database global propose_records propose_records[self.id] = (self._count, self._edit_msg_ident) TOKEN = sys.argv[1] bot = amanobot.aio.DelegatorBot(TOKEN, [ include_callback_query_chat_id(pave_event_space())( per_chat_id(types=['private']), create_open, Lover, timeout=10), ]) loop = asyncio.get_event_loop() loop.create_task(MessageLoop(bot).run_forever()) print('Listening ...') loop.run_forever()
provider_token=PAYMENT_PROVIDER_TOKEN, start_parameter='abc', currency='HKD', prices=[ LabeledPrice(label='One Case', amount=987), LabeledPrice(label='Package', amount=12) ], need_shipping_address=True, is_flexible=True) # required for shipping query print('Invoice sent:') pprint(sent) TOKEN = sys.argv[1] PAYMENT_PROVIDER_TOKEN = sys.argv[2] bot = amanobot.aio.DelegatorBot( TOKEN, [(per_message(flavors=['chat']), call(send_invoice)), pave_event_space()( per_invoice_payload(), create_open, OrderProcessor, timeout=30, )]) loop = asyncio.get_event_loop() loop.create_task(MessageLoop(bot).run_forever()) loop.run_forever()
self._score[self._answer == int(query_data)] += 1 self._answer = await self._show_next_question() async def on__idle(self, event): text = '%d out of %d' % (self._score[True], self._score[True] + self._score[False]) await self.editor.editMessageText( text + '\n\nThis message will disappear in 5 seconds to test deleteMessage', reply_markup=None) await asyncio.sleep(5) await self.editor.deleteMessage() self.close() TOKEN = sys.argv[1] bot = amanobot.aio.DelegatorBot(TOKEN, [ pave_event_space()(per_chat_id(), create_open, QuizStarter, timeout=3), pave_event_space()( per_callback_query_origin(), create_open, Quizzer, timeout=10), ]) loop = asyncio.get_event_loop() loop.create_task(MessageLoop(bot).run_forever()) print('Listening ...') loop.run_forever()
from amanobot.aio.delegate import per_chat_id, create_open, pave_event_space """ $ python3.5 countera.py <token> Counts number of messages a user has sent. Starts over if silent for 10 seconds. Illustrates the basic usage of `DelegateBot` and `ChatHandler`. """ class MessageCounter(amanobot.aio.helper.ChatHandler): def __init__(self, *args, **kwargs): super(MessageCounter, self).__init__(*args, **kwargs) self._count = 0 async def on_chat_message(self, msg): self._count += 1 await self.sender.sendMessage(self._count) TOKEN = sys.argv[1] # get token from command-line bot = amanobot.aio.DelegatorBot(TOKEN, [ pave_event_space()(per_chat_id(), create_open, MessageCounter, timeout=10), ]) loop = asyncio.get_event_loop() loop.create_task(MessageLoop(bot).run_forever()) print('Listening ...') loop.run_forever()
# 2. Define event-handling function async def on__alarm(self, event): print(event) # see what the event object actually looks like await self.sender.sendMessage('Beep beep, time to wake up!') async def on_chat_message(self, msg): try: delay = float(msg['text']) # 3. Schedule event # The second argument is the event spec: a 2-tuple of (flavor, dict). # Put any custom data in the dict. Retrieve them in the event-handling function. self.scheduler.event_later(delay, ('_alarm', {'payload': delay})) await self.sender.sendMessage( 'Got it. Alarm is set at %.1f seconds from now.' % delay) except ValueError: await self.sender.sendMessage('Not a number. No alarm set.') TOKEN = sys.argv[1] bot = amanobot.aio.DelegatorBot(TOKEN, [ pave_event_space()(per_chat_id(), create_open, AlarmSetter, timeout=10), ]) loop = asyncio.get_event_loop() loop.create_task(MessageLoop(bot).run_forever()) print('Listening ...') loop.run_forever()
suggested_date = evt['date'] ballot = self._ballots[inline_message_id] text = '%s\nYes: %d\nNo: %d' % ( (suggested_date, ) + self._count(ballot)) editor = Editor(self.bot, inline_message_id) await editor.editMessageText(text=text, reply_markup=None) del self._ballots[inline_message_id] self.close() def on_close(self, ex): global user_ballots user_ballots[self.id] = self._ballots print('Closing, ballots saved.') TOKEN = sys.argv[1] bot = amanobot.aio.DelegatorBot(TOKEN, [ intercept_callback_query_origin(pave_event_space())( per_inline_from_id(), create_open, DateCalculator, timeout=10), ]) loop = asyncio.get_event_loop() loop.create_task(MessageLoop(bot).run_forever()) print('Listening ...') loop.run_forever()
except ValueError: await self.sender.sendMessage('Give me a number, please.') return # check the guess against the answer ... if guess != self._answer: # give a descriptive hint hint = self._hint(self._answer, guess) await self.sender.sendMessage(hint) else: await self.sender.sendMessage('Correct!') self.close() async def on__idle(self, event): await self.sender.sendMessage('Game expired. The answer is %d' % self._answer) self.close() TOKEN = sys.argv[1] bot = amanobot.aio.DelegatorBot(TOKEN, [ pave_event_space()(per_chat_id(), create_open, Player, timeout=10), ]) loop = asyncio.get_event_loop() loop.create_task(MessageLoop(bot).run_forever()) print('Listening ...') loop.run_forever()
name = msg['from']['first_name'] print("LOG: " + name + ": " + txt) if txt == '/start': await start(chat_id, name) elif txt == '/help': await help_me(chat_id) elif txt == '/yes': await yes_no(chat_id, True) elif txt == '/no': await yes_no(chat_id, False) else: await process_result(chat_id, txt) elif content_type == 'voice': await process_audio(chat_id, msg) elif content_type == 'photo': await process_image(chat_id, msg) if __name__ == '__main__': TOKEN, client_id = load_credentials() client = wolframalpha.Client(client_id) bot = amanobot.aio.DelegatorBot(TOKEN, [ pave_event_space()( per_chat_id(), create_open, MessageHandler, timeout=60), ]) loop = asyncio.get_event_loop() loop.create_task(MessageLoop(bot).run_forever()) loop.run_forever()
def compute_answer(): query_id, from_id, query_string = amanobot.glance(msg, flavor='inline_query') print(self.id, ':', 'Inline Query:', query_id, from_id, query_string) articles = [{'type': 'article', 'id': 'abc', 'title': query_string, 'message_text': query_string}] return articles self.answerer.answer(msg, compute_answer) def on_chosen_inline_result(self, msg): from pprint import pprint pprint(msg) result_id, from_id, query_string = amanobot.glance(msg, flavor='chosen_inline_result') print(self.id, ':', 'Chosen Inline Result:', result_id, from_id, query_string) TOKEN = sys.argv[1] bot = amanobot.aio.DelegatorBot(TOKEN, [ pave_event_space()( per_inline_from_id(), create_open, InlineHandler, timeout=10), ]) loop = asyncio.get_event_loop() loop.create_task(MessageLoop(bot).run_forever()) print('Listening ...') loop.run_forever()
suggested_date = evt['date'] ballot = self._ballots[inline_message_id] text = '%s\nYes: %d\nNo: %d' % ((suggested_date,) + self._count(ballot)) editor = Editor(self.bot, inline_message_id) await editor.editMessageText(text=text, reply_markup=None) del self._ballots[inline_message_id] self.close() def on_close(self, ex): global user_ballots user_ballots[self.id] = self._ballots print('Closing, ballots saved.') TOKEN = sys.argv[1] bot = amanobot.aio.DelegatorBot(TOKEN, [ intercept_callback_query_origin( pave_event_space())( per_inline_from_id(), create_open, DateCalculator, timeout=10), ]) loop = asyncio.get_event_loop() loop.create_task(MessageLoop(bot).run_forever()) print('Listening ...') loop.run_forever()