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, custom_thread(call(self._send_welcome))),
        ])
Ejemplo n.º 2
0
        super(MessageCounter, self).__init__(*args, **kwargs)
        self._count = 0

    def on_chat_message(self, msg):
        self._count += 1
        self.sender.sendMessage(self._count)


TOKEN = sys.argv[1]
PORT = int(sys.argv[2])
URL = sys.argv[3]

app = Flask(__name__)

bot = amanobot.DelegatorBot(TOKEN, [
    pave_event_space()(per_chat_id(), create_open, MessageCounter, timeout=10),
])

webhook = OrderedWebhook(bot)


@app.route('/webhook', methods=['GET', 'POST'])
def pass_update():
    webhook.feed(request.data)
    return 'OK'


if __name__ == '__main__':
    try:
        bot.setWebhook(URL)
    # Sometimes it would raise this error, but webhook still set successfully.
Ejemplo n.º 3
0
        if query_data != 'start':
            self._score[self._answer == int(query_data)] += 1

        self._answer = self._show_next_question()

    def on__idle(self, event):
        text = '%d out of %d' % (self._score[True], self._score[True]+self._score[False])
        self.editor.editMessageText(
            text + '\n\nThis message will disappear in 5 seconds to test deleteMessage',
            reply_markup=None)

        time.sleep(5)
        self.editor.deleteMessage()
        self.close()


TOKEN = sys.argv[1]

bot = amanobot.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),
])

MessageLoop(bot).run_as_thread()
print('Listening ...')

while 1:
    time.sleep(10)
Ejemplo n.º 4
0
    if content_type == 'text':
        sent = bot.sendInvoice(
                   chat_id, "Nick's Hand Cream", "Keep a man's hand like a woman's",
                   payload='a-string-identifying-related-payment-messages-tuvwxyz',
                   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.DelegatorBot(TOKEN, [
    (per_message(flavors=['chat']), call(send_invoice)),
    pave_event_space()(
        per_invoice_payload(), create_open, OrderProcessor, timeout=30,
    )
])

MessageLoop(bot).run_as_thread()

while 1:
    time.sleep(10)
Ejemplo n.º 5
0
            articles = [
                InlineQueryResultArticle(
                    id='abc',
                    title=text,
                    input_message_content=InputTextMessageContent(
                        message_text=text))
            ]

            return articles

        self.answerer.answer(msg, compute)

    def on_chosen_inline_result(self, 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]  # get token from command-line

bot = amanobot.DelegatorBot(TOKEN, [
    pave_event_space()(
        per_inline_from_id(), create_open, QueryCounter, timeout=10),
])
MessageLoop(bot).run_as_thread()

while 1:
    time.sleep(10)
Ejemplo n.º 6
0
                        for key, item in flex.items():
                            msg += f'\n        *{key}:* {item}'
                        self.sender.sendMessage(msg, parse_mode='Markdown')
                        return
                    except:
                        self.sender.sendMessage(
                            "Não encontrei informações da Flex de " +
                            argumento)
                        return

    def on_callback_query(self, msg):
        query_id, from_id, query_data = amanobot.glance(
            msg, flavor='callback_query')
        pass

    def on__idle(self, event):
        # print('Em caso de dúvidas, contate a STI por telefone. O ramal 0000.')
        pass


TOKEN = '1366501748:AAHD61_3d0brQKvpGDCRt3caB7sG5yJJx-M'

bot = amanobot.DelegatorBot(TOKEN, [
    include_callback_query_chat_id(pave_event_space())(
        per_chat_id(types='all'), create_open, Chat, timeout=10),
])
MessageLoop(bot).run_as_thread()
print('Listening ...')

while 1:
    time.sleep(10)
Ejemplo n.º 7
0
            self._cancel_last()
            self.sender.sendMessage('Thank you!')
            self.close()
        else:
            self.bot.answerCallbackQuery(query_id, text='Ok. But I am going to keep asking.')
            self._cancel_last()
            self._propose()

    def on__idle(self, event):
        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.DelegatorBot(TOKEN, [
    include_callback_query_chat_id(
        pave_event_space())(
            per_chat_id(types=['private']), create_open, Lover, timeout=10),
])
MessageLoop(bot).run_as_thread()
print('Listening ...')

while 1:
    time.sleep(10)
Ejemplo n.º 8
0
                '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.DelegatorBot(TOKEN, [
    pave_event_space()(
        per_inline_from_id(), create_open, InlineHandler, timeout=10),
])
MessageLoop(bot).run_as_thread()
print('Listening ...')

while 1:
    time.sleep(10)
Ejemplo n.º 9
0
    # 2. Define event-handling function
    def on__alarm(self, event):
        print(event)  # see what the event object actually looks like
        self.sender.sendMessage('Beep beep, time to wake up!')

    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}))
            self.sender.sendMessage(
                'Got it. Alarm is set at %.1f seconds from now.' % delay)
        except ValueError:
            self.sender.sendMessage('Not a number. No alarm set.')


TOKEN = sys.argv[1]

bot = amanobot.DelegatorBot(TOKEN, [
    pave_event_space()(per_chat_id(), create_open, AlarmSetter, timeout=10),
])
MessageLoop(bot).run_as_thread()
print('Listening ...')

while 1:
    time.sleep(10)
Ejemplo n.º 10
0
            guess = int(msg['text'])
        except ValueError:
            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)
            self.sender.sendMessage(hint)
        else:
            self.sender.sendMessage('Correct!')
            self.close()

    def on__idle(self, event):
        self.sender.sendMessage('Game expired. The answer is %d' %
                                self._answer)
        self.close()


TOKEN = sys.argv[1]

bot = amanobot.DelegatorBot(TOKEN, [
    pave_event_space()(per_chat_id(), create_open, Player, timeout=10),
])
MessageLoop(bot).run_as_thread()
print('Listening ...')

while 1:
    time.sleep(10)
Ejemplo n.º 11
0
        inline_message_id = evt['inline_message_id']
        suggested_date = evt['date']

        ballot = self._ballots[inline_message_id]
        text = '%s\nYes: %d\nNo: %d' % (
            (suggested_date, ) + self._count(ballot))

        editor = amanobot.helper.Editor(self.bot, inline_message_id)
        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.DelegatorBot(TOKEN, [
    intercept_callback_query_origin(pave_event_space())(
        per_inline_from_id(), create_open, DateCalculator, timeout=10),
])
MessageLoop(bot).run_as_thread()
print('Listening ...')

while 1:
    time.sleep(10)