Ejemplo n.º 1
0
    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)),
        ])
Ejemplo n.º 2
0
        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()
Ejemplo n.º 3
0
            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()
Ejemplo n.º 4
0
            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()
Ejemplo n.º 5
0
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()
Ejemplo n.º 6
0
    # 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()
Ejemplo n.º 7
0
        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()
Ejemplo n.º 8
0
        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()
Ejemplo n.º 9
0
            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()
Ejemplo n.º 10
0
        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()
Ejemplo n.º 11
0
        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()