Esempio n. 1
0
def create_bot(token, translator):
    """ Create a new bot instance
    """
    return telepot.async.DelegatorBot(token, [
        (per_inline_from_id(), create_open(
            BabelegramHandler, timeout=60, translator=translator)),
    ])
Esempio n. 2
0
def create_bot(token, translator_engine):
    """ Create a new bot instance
    """
    return telepot. async .DelegatorBot(token, [
        (per_inline_from_id(),
         create_open(BabelegramHandler,
                     timeout=60,
                     translator_engine=translator_engine)),
    ])
Esempio n. 3
0
        # Display message counts separated by flavors
        print(self.id, ':', 
              flavor, '+1', ':', 
              ', '.join([str(self._counts[f]) for f in ['normal', 'inline_query', 'chosen_inline_result']]))

        # Have to answer inline query to receive chosen result
        if flavor == 'inline_query':
            def compute_answer():
                query_id, from_id, query_string = telepot.glance(msg, flavor=flavor)

                articles = [{'type': 'article',
                                 'id': 'abc', 'title': query_string, 'message_text': query_string}]

                return articles

            self._answerer.answer(msg, compute_answer)


TOKEN = sys.argv[1]

bot = telepot.async.DelegatorBot(TOKEN, [
    (per_from_id(), create_open(UserTracker, timeout=20)),
])
loop = asyncio.get_event_loop()

loop.create_task(bot.messageLoop())
print('Listening ...')

loop.run_forever()
Esempio n. 4
0
    def on_message(self, msg):
        self._count += 1
        flavor = telepot.flavor(msg)

        print('%s %d: %d: %s: %s' % (type(self).__name__, self.id, self._count, flavor, telepot.glance(msg, flavor=flavor)))

# Do some simple stuff for every message, to be paired with per_message()
def simple_function(seed_tuple):
    bot, msg, id = seed_tuple
    print('Simply print:', msg)


TOKEN = sys.argv[1]

bot = telepot.async.DelegatorBot(TOKEN, [
    (per_chat_id(), create_open(ChatHandlerSubclass, timeout=10)),

    (per_from_id(), create_open(UserHandlerSubclass, timeout=20)),

    (per_inline_from_id(), create_open(UserHandlerSubclassInlineOnly, timeout=10)),

    (per_application(), create_open(OnlyOneInstance)),

    (per_message(), call(simple_function)),
])

loop = asyncio.get_event_loop()

loop.create_task(bot.messageLoop())
print('Listening ...')
Esempio n. 5
0
    def on_message(self, msg):
        self._count += 1
        flavor = telepot.flavor(msg)

        print('%s %d: %d: %s: %s' % (type(self).__name__, self.id, self._count, flavor, telepot.glance(msg, flavor=flavor)))

# Do some simple stuff for every message, to be paired with per_message()
def simple_function(seed_tuple):
    bot, msg, id = seed_tuple
    print('Simply print:', msg)


TOKEN = sys.argv[1]

bot = telepot.async.DelegatorBot(TOKEN, [
    (per_chat_id(), create_open(ChatHandlerSubclass, timeout=10)),

    (per_from_id(), create_open(UserHandlerSubclass, timeout=20)),

    (per_inline_from_id(), create_open(InlineUserHandlerSubclass, timeout=10)),

    (per_application(), create_open(OneInstanceOnly)),

    (per_message(), call(simple_function)),
])

loop = asyncio.get_event_loop()

loop.create_task(bot.message_loop())
print('Listening ...')
Esempio n. 6
0
    @asyncio.coroutine
    def on_message(self, msg):
        flavor = telepot.flavor(msg)

        if flavor == 'inline_query':
            query_id, from_id, query_string = telepot.glance2(msg, flavor=flavor)
            print(self.id, ':', 'Inline Query:', query_id, from_id, query_string)

            articles = [{'type': 'article',
                             'id': 'abc', 'title': 'ABC', 'message_text': 'Good morning'}]

            yield from self.bot.answerInlineQuery(query_id, articles)
            print(self.id, ':', 'Answers sent.')

        elif flavor == 'chosen_inline_result':
            result_id, from_id, query_string = telepot.glance2(msg, flavor=flavor)
            print(self.id, ':', 'Chosen Inline Result:', result_id, from_id, query_string)


TOKEN = sys.argv[1]

bot = telepot.async.DelegatorBot(TOKEN, [
    (per_inline_from_id(), create_open(InlineHandler, timeout=10)),
])
loop = asyncio.get_event_loop()

loop.create_task(bot.messageLoop())
print('Listening ...')

loop.run_forever()
Esempio n. 7
0
          
    @asyncio.coroutine
    def on_callback_query(self, msg):
      query_id, from_id, query_data = telepot.glance(msg, flavor='callback_query')
      print ('Callback Query:', query_id, from_id, query_data)
      
      if query_data == 'dailyupdates':
        yield from self.sender.sendMessage("Got it! \U0001f60d"
                                           "\nLet\'s start with the current headlines!")
        items = news_source.get_top_news(3)
        
        for item in items:
          print("Got an item")
          yield from self.sender.sendMessage("*{}*\n{}".format(item.title, item.description), parse_mode='Markdown')
      
      elif query_data == 'noupdates':
        yield from self.sender.sendMessage("Ok, I\'ll keep my mouth shut untill you ask me! \U0001f64a")

news_source = NewsDataSource.NewsDataSource('http://s.nos.nl/extern/nieuws.json')

TOKEN = sys.argv[1]  # get token from command-line

bot = telepot.async.DelegatorBot(TOKEN, [
    (per_chat_id(), create_open(NosBot, timeout=10)),
])

loop = asyncio.get_event_loop()
loop.create_task(bot.message_loop())
print('Listening ...')

loop.run_forever()
Esempio n. 8
0
                             flavors=['inline_query', 'chosen_inline_result'])
        self._count = 0

    def on_message(self, msg):
        self._count += 1
        flavor = telepot.flavor(msg)

        print('%s %d: %d: %s: %s' %
              (type(self).__name__, self.id, self._count, flavor,
               telepot.glance(msg, flavor=flavor)))

    def on_close(self, exception):
        print('%s %d: closed' % (type(self).__name__, self.id))


TOKEN = sys.argv[1]

bot = telepot. async .DelegatorBot(TOKEN, [
    (per_chat_id(), create_open(ChatHandlerSubclass, timeout=10)),
    (per_from_id(), create_open(UserHandlerSubclass, timeout=20)),
    (per_inline_from_id(),
     create_open(UserHandlerSubclassInlineOnly, timeout=10)),
])

loop = asyncio.get_event_loop()

loop.create_task(bot.messageLoop())
print('Listening ...')

loop.run_forever()
Esempio n. 9
0
        print(self.id, ':', 'Inline Query:', query_id, from_id, query_string)

        articles = [{
            'type': 'article',
            'id': 'abc',
            'title': 'ABC',
            'message_text': 'Good morning'
        }]

        yield from self.bot.answerInlineQuery(query_id, articles)
        print(self.id, ':', 'Answers sent.')

    def on_chosen_inline_result(self, msg):
        result_id, from_id, query_string = telepot.glance(
            msg, flavor='chosen_inline_result')
        print(self.id, ':', 'Chosen Inline Result:', result_id, from_id,
              query_string)


TOKEN = sys.argv[1]

bot = telepot. async .DelegatorBot(TOKEN, [
    (per_inline_from_id(), create_open(InlineHandler, timeout=10)),
])
loop = asyncio.get_event_loop()

loop.create_task(bot.messageLoop())
print('Listening ...')

loop.run_forever()
Esempio n. 10
0
from telepot. async .delegate import create_open
"""
$ python3.4 countera.py <token>

Count number of messages. Start over if silent for 10 seconds.
"""


class MessageCounter(telepot.helper.ChatHandler):
    def __init__(self, seed_tuple, timeout):
        super(MessageCounter, self).__init__(seed_tuple, timeout)
        self._count = 0

    @asyncio.coroutine
    def on_message(self, msg):
        self._count += 1
        yield from self.sender.sendMessage(self._count)


TOKEN = sys.argv[1]  # get token from command-line

bot = telepot. async .DelegatorBot(TOKEN, [
    (per_chat_id(), create_open(MessageCounter, timeout=10)),
])

loop = asyncio.get_event_loop()
loop.create_task(bot.messageLoop())
print('Listening ...')

loop.run_forever()
Esempio n. 11
0
#!/usr/bin/env python3
import asyncio
import yaml
import telepot
from telepot. async .delegate import create_open
from telepot.delegate import per_chat_id

from tomatotimertgbot import Tomato

if __name__ == "__main__":
    config = yaml.load(open("config.yml", "r"))
    bot = telepot. async .DelegatorBot(config["telegram_bot_id"], [
        (per_chat_id(), create_open(Tomato, timeout=72 * 3600)),
    ])

    loop = asyncio.get_event_loop()
    loop.create_task(bot.messageLoop())
    loop.run_forever()
Esempio n. 12
0
#!/usr/bin/env python3
import asyncio
import yaml
import telepot
from telepot.async.delegate import create_open
from telepot.delegate import per_chat_id

from tomatotimertgbot import Tomato

if __name__ == "__main__":
    config = yaml.load(open("config.yml", "r"))
    bot = telepot.async.DelegatorBot(
        config["telegram_bot_id"],
        [
            (per_chat_id(), create_open(
                Tomato, timeout=72*3600)),
        ])

    loop = asyncio.get_event_loop()
    loop.create_task(bot.messageLoop())
    loop.run_forever()

Esempio n. 13
0
import telepot
from telepot.delegate import per_chat_id
from telepot.async.delegate import create_open
from web import pingforward_web_init
from botdata import get_config_item

from conversationhandler import ConversationHandler
from apipull.apipull import check_api_loop
from autogroup.groupmaster import group_loop

TOKEN = "154397353:AAEChVXNz7BXxenwjNokfryfZqUgiwZLN6A"

class LoggedDelegatorBot(telepot.async.DelegatorBot):
    def __init__(self, token, delegation_patterns, loop=None):
        super(LoggedDelegatorBot, self).__init__(token, delegation_patterns, loop)

    async def sendMessage(self, chat_id, text, parse_mode=None, disable_web_page_preview=None, reply_to_message_id=None, reply_markup=None):
        print("[REPLY TO: "+str(chat_id)+"]:\n"+str(text))
        await super(LoggedDelegatorBot, self).sendMessage(chat_id, text, parse_mode, disable_web_page_preview, reply_to_message_id, reply_markup)

bot = LoggedDelegatorBot(get_config_item("TELEPOT_TOKEN", TOKEN), [
    (per_chat_id(), create_open(ConversationHandler, timeout=get_config_item("TELEPOT_CONVO_TIMEOUT", 60*10))),
])

loop = asyncio.get_event_loop()
loop.create_task(bot.messageLoop())
loop.create_task(check_api_loop(bot, loop))
loop.create_task(group_loop(bot, loop))
loop.create_task(pingforward_web_init(bot,loop))
loop.run_forever()
Esempio n. 14
0
            return articles

        self._answerer.answer(msg, compute_answer)

    # override default on_chosen_inline_result
    def on_chosen_inline_result(self, msg):
        pass

    # override default logger error in on_close, otherwise logs become messy
    def on_close(self, exception):
        pass

    # fix a bug with UserHandler expecting on_chat_message to be implemented
    def on_chat_message(self, msg):
        pass


ACCESS_TOKEN = os.getenv('TELEGRAM_API_KEY')

bot = telepot.async.DelegatorBot(ACCESS_TOKEN, [
    (per_message(), create_open(YesBot, timeout=0)),
])
loop = asyncio.get_event_loop()

loop.create_task(bot.message_loop())

print('Started!')

loop.run_forever()
Esempio n. 15
0
    def __init__(self, seed_tuple, timeout):
        super(UserHandlerSubclassInlineOnly, self).__init__(seed_tuple, timeout, flavors=['inline_query', 'chosen_inline_result'])
        self._count = 0

    def on_message(self, msg):
        self._count += 1
        flavor = telepot.flavor(msg)

        print('%s %d: %d: %s: %s' % (type(self).__name__, self.id, self._count, flavor, telepot.glance2(msg, flavor=flavor)))

    def on_close(self, exception):
        print('%s %d: closed' % (type(self).__name__, self.id))


TOKEN = sys.argv[1]

bot = telepot.async.DelegatorBot(TOKEN, [
    (per_chat_id(), create_open(ChatHandlerSubclass, timeout=10)),

    (per_from_id(), create_open(UserHandlerSubclass, timeout=20)),

    (per_inline_from_id(), create_open(UserHandlerSubclassInlineOnly, timeout=10)),
])

loop = asyncio.get_event_loop()

loop.create_task(bot.messageLoop())
print('Listening ...')

loop.run_forever()
Esempio n. 16
0
            guess = int(msg['text'])
        except ValueError:
            yield from 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)
            yield from self.sender.sendMessage(hint)
        else:
            yield from self.sender.sendMessage('Correct!')
            self.close()

    @asyncio.coroutine
    def on_close(self, exception):
        if isinstance(exception, telepot.helper.WaitTooLong):
            yield from self.sender.sendMessage(
                'Game expired. The answer is %d' % self._answer)


bot = telepot. async .DelegatorBot(BOTKEY, [
    (per_chat_id(), create_open(Player, timeout=10)),
])
loop = asyncio.get_event_loop()

loop.create_task(bot.messageLoop())
print('Listening ...')

loop.run_forever()
Esempio n. 17
0
          yield from self.sender.sendMessage('Done')
          response = yield from bot.sendPhoto(chat_id, f)
          # Let admin know :)
          #pprint(response)
          if (chat_id != admin_chat_id):
             yield from bot.sendPhoto(admin_chat_id, response['photo'][-1]['file_id'])
          
          self._count = 0

# Do some simple stuff for every message, to be paired with per_message()
def simple_function(seed_tuple):
    bot, msg, id = seed_tuple
    content_type, chat_type, chat_id = telepot.glance(msg)
    if (chat_id != admin_chat_id):
        yield from bot.sendMessage(admin_chat_id,'Request from @'+msg['from']['username'])
        yield from bot.forwardMessage(admin_chat_id,chat_id, msg['message_id'])


TOKEN = sys.argv[1]  # get token from command-line

bot = telepot.async.DelegatorBot(TOKEN, [
    (per_chat_id(), create_open(MessageCounter, timeout=10)),
    (per_message(), call(simple_function)),
])

loop = asyncio.get_event_loop()
loop.create_task(bot.message_loop())
print('Listening ...')

loop.run_forever()
Esempio n. 18
0
        except ValueError:
            yield from 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)
            yield from self.sender.sendMessage(hint)
        else:
            yield from self.sender.sendMessage('Correct!')
            self.close()

    @asyncio.coroutine
    def on_close(self, exception):
        if isinstance(exception, telepot.helper.WaitTooLong):
            yield from self.sender.sendMessage('Game expired. The answer is %d' % self._answer)


TOKEN = sys.argv[1]

bot = telepot.async.DelegatorBot(TOKEN, [
    (per_chat_id(), create_open(Player, timeout=10)),
])
loop = asyncio.get_event_loop()

loop.create_task(bot.messageLoop())
print('Listening ...')

loop.run_forever()
Esempio n. 19
0
        # Display message counts separated by flavors
        print(self.id, ':',
              flavor, '+1', ':',
              ', '.join([str(self._counts[f]) for f in ['chat', 'inline_query', 'chosen_inline_result']]))

        # Have to answer inline query to receive chosen result
        if flavor == 'inline_query':
            def compute_answer():
                query_id, from_id, query_string = telepot.glance(msg, flavor=flavor)

                articles = [{'type': 'article',
                                 'id': 'abc', 'title': query_string, 'message_text': query_string}]

                return articles

            self._answerer.answer(msg, compute_answer)


TOKEN = sys.argv[1]

bot = telepot.async.DelegatorBot(TOKEN, [
    (per_from_id(), create_open(UserTracker, timeout=20)),
])
loop = asyncio.get_event_loop()

loop.create_task(bot.message_loop())
print('Listening ...')

loop.run_forever()
Esempio n. 20
0
class InlineOnlyHandler(telepot.helper.UserHandler):
    def __init__(self, seed_tuple, timeout):
        super(InlineOnlyHandler, self).__init__(seed_tuple, timeout, flavors=['inline_query'])
        self._count = 0

    def on_message(self, msg):
        self._count += 1
        print('%s %d: %d: %s' % (type(self).__name__, self.id, self._count, telepot.glance2(msg, flavor='inline_query')))

    def on_close(self, exception):
        print('%s %d: closed' % (type(self).__name__, self.id))


TOKEN = sys.argv[1]

bot = telepot.async.DelegatorBot(TOKEN, [
    (per_chat_id(), create_open(MessageOnlyHandler, timeout=10)),

    (per_from_id(), create_open(MessageAndInlineHandler, timeout=20)),

    (per_inline_from_id(), create_open(InlineOnlyHandler, timeout=10)),
])

loop = asyncio.get_event_loop()

loop.create_task(bot.messageLoop())
print('Listening ...')

loop.run_forever()