Exemplo n.º 1
0
 def call(self, chat, author, q):
     if self.google_search_key is None:
         self.google_search_key = db.get_key('google_search')
     data = {
         'key': self.google_search_key,
         'cx': '009373417816394415455:i3e_omr58us',
         'q': q.encode('utf-8'),
         'searchType': 'image',
         'num': 1
     }
     response = urlfetch.fetch(
         url='https://www.googleapis.com/customsearch/v1?' +
         urllib.urlencode(data),
         method=urlfetch.GET)
     items = json.loads(response.content)['items']
     if len(items) == 0:
         telegram.send(chat, "Nothing found")
         return
     image = items[0]
     image_url = image['link']
     image_response = urlfetch.fetch(image_url, method=urlfetch.GET)
     if image_response.status_code != 200:
         telegram.send(chat, "Error retrieving image")
         return
     image_name = urlparse.urlsplit(image_url).path.split('/')[-1]
     telegram.send_image(chat, image_response.content, image_name,
                         image['mime'])
Exemplo n.º 2
0
 def call(self, chat, author, arguments):
     poll = db.get_poll(chat)
     if poll is None:
         telegram.send(chat, "No active polls")
         return
     db.add_answer(poll, arguments)
     telegram.send(chat, "Answer addded")
Exemplo n.º 3
0
 def call(self, chat, author, command):
     poll = db.get_poll(chat)
     if poll is None:
         telegram.send(chat, "No active poll")
         return
     pretty_results(chat, poll)
     db.end_poll(poll)
Exemplo n.º 4
0
 def call(self, chat, author, event_id):
     player = db.find_player_by_telegram_id(author)
     if player is None:
         telegram.send(chat, "Introduce yourself by providing your psn id: /r register <psn-id>")
         return
     db.delete_event(player, event_id)
     telegram.send(chat, "Deleted")
Exemplo n.º 5
0
 def call(self, chat, author, event_id):
     player = db.find_player_by_telegram_id(author)
     if player is None:
         telegram.send(chat, "Introduce yourself by providing your psn id: /register <psn-id>")
         return
     db.leave_event(player, event_id)
     telegram.send(chat, player.psn_id + ' left event #' + event_id)
Exemplo n.º 6
0
 def call(self, chat, author, arguments):
     player = db.find_player_by_telegram_id(author)
     if player is None:
         telegram.send(chat, "Introduce yourself by providing your psn id: /r register <psn-id>")
         return
     type_list = db.find_types()
     telegram.send(chat, '\n'.join(map(lambda t: t.code.encode('utf-8') + ': ' + t.name.encode('utf-8'), type_list)))
Exemplo n.º 7
0
    def call(self, chat, author, q):
        if q in self.cache:
            (items, offset) = self.cache[q]
            if offset == 10:
                items = self.find(q, 10)
                offset = 0
            self.cache[q] = (items, offset + 1)
            image = items[offset]
        else:
            items = self.find(q, 0)
            if len(items) == 0:
                telegram.send(chat, "Nothing found")
                return
            image = items[0]
            if self.cache_list == 10:
                last = self.cache_list[0]
                self.cache_list.pop(0)
                self.cache.pop(last, None)
            self.cache_list.append(q)
            self.cache[q] = (items, 1)

        image_url = image['link']
        image_response = urlfetch.fetch(image_url, method=urlfetch.GET)
        if image_response.status_code != 200:
            telegram.send(chat, "Error retrieving image")
            return
        image_name = urlparse.urlsplit(image_url).path.split('/')[-1]
        telegram.send_image(chat, image_response.content, image_name, image['mime'])
Exemplo n.º 8
0
 def parse_arguments(self, chat, arguments):
     values = arguments.split(None, 3)
     if len(values) < 3:
         telegram.send(chat, "Not enough arguments")
         return
     if len(values) < 4:
         return values + [None]
     return values
Exemplo n.º 9
0
 def parse_arguments(self, chat, arguments):
     values = arguments.split(None, 3)
     if len(values) < 3:
         telegram.send(chat, "Not enough arguments")
         return
     if len(values) < 4:
         return values + [None]
     return values
Exemplo n.º 10
0
 def call(self, chat, author, event_id):
     player = db.find_player_by_telegram_id(author)
     if player is None:
         telegram.send(
             chat,
             "Introduce yourself by providing your psn id: /r register <psn-id>"
         )
         return
     db.delete_event(player, event_id)
     telegram.send(chat, "Deleted")
Exemplo n.º 11
0
def github():
    data = request.json
    admin("GitHub webHook")
    if "action" in data and data["action"] == 'opened':
        for i in ids:
            send(
                message_format("Nueva issue abierta",
                               data["issue"],
                               json=False), {"id": i})
    analize(data)
    return "200 OK"
Exemplo n.º 12
0
 def call(self, chat, author, arguments):
     player = db.find_player_by_telegram_id(author)
     if player is None:
         telegram.send(
             chat,
             "Introduce yourself by providing your psn id: /r register <psn-id>"
         )
         return
     type_list = db.find_types()
     telegram.send(
         chat, '\n'.join(
             map(
                 lambda t: t.code.encode('utf-8') + ': ' + t.name.encode(
                     'utf-8'), type_list)))
Exemplo n.º 13
0
    def call(self, chat, author, arguments):
        player = db.find_player_by_telegram_id(author)
        if player is None:
            telegram.send(chat, 'Introduce yourself by providing your psn id: /register <psn-id>')
            return
        event_list = db.find_events()

        if arguments is None:
            event_list = filter(lambda e: e.date.date() == datetime.today().date(), event_list)
        elif arguments == 'my':
            event_list = filter(lambda e: player.psn_id in e.participants, event_list)
        elif arguments == 'all':
            pass
        elif arguments is not None:
            if arguments.isdigit():
                event_list = filter(lambda e: int(arguments) == int(e.key.id()), event_list)
            else:
                event_type = db.find_type_by_code(arguments)
                if event_type is None:
                    telegram.send(chat, 'Event type ' + arguments + ' not found')
                    return
                event_list = filter(lambda e: e.type == event_type.key, event_list)

        if len(event_list) == 0:
            telegram.send(chat, 'No events')
            return

        for e in event_list:
            telegram.send(chat, pretty_event(e))
Exemplo n.º 14
0
def send_telegram_message(message):
    """Sends message via Telegram"""
    #url = "https://api.telegram.org/" + config.telegram_bot_id + "/sendMessage"
    #print(url)

    try:
        telegram.send(message)
        print("Sent!!")
    except Exception as e:
        print("An error occurred in sending the alert message via Telegram")
        print(e)
        #response = mybolt.digitalWrite('0', 'LOW')
        #print(response)

        return False
Exemplo n.º 15
0
def pretty_results(chat, poll):
    if poll.users_asnwers is None:
        telegram.send(chat, "No answers yet")
        return
    results = {}
    all_count = len(poll.users_asnwers)
    for user, answer in poll.users_asnwers.iteritems():
        (count, prcnt) = results.get(answer, (0, 0))
        count += 1
        results[answer] = (count, int(float(count)/float(all_count) * 100))
    s = poll.question.encode('utf-8') + '\nResults:\n'
    answers = []
    for i, answer in enumerate(poll.answers):
        (count, prcnt) = results.get(i + 1, (0, 0))
        answers.append(answer.encode('utf-8') + ': ' + str(count) + ' votes, ' + str(prcnt) + '%')
    s += '\n'.join(answers)
    telegram.send(chat, s)
Exemplo n.º 16
0
    def call(self, chat, author, choice):
        poll = db.get_poll(chat)
        if poll is None:
            telegram.send(chat, "No active poll")
            return
        if choice is None:
            telegram.send(chat, "Specify choice")
            return

        try:
            value = int(choice)
        except ValueError:
            telegram.send(chat, "Specify choice as an integer number")
            return

        if value > len(poll.answers):
            telegram.send(chat, "No such answer")
            return

        db.answer_poll(poll, author, value)
        telegram.send(chat, "Answer recorded")
Exemplo n.º 17
0
def recieve(request):
    commands = r.commands
    (chat, author, message) = telegram.recieve(request)
    if message.startswith('/'):
        (command, arguments) = parse(message)
        if command == '/help':
            if arguments is not None:
                cmd = '/' + arguments
                if cmd not in commands:
                    telegram.send(chat, "Uknown command: " + str(arguments))
                    return
                telegram.send(chat, commands[cmd].help())
                return

            response = 'Commands:'
            for name, command in commands.iteritems():
                response += '\n' + name + ': ' + command.description()
            response += '\n\nType /help <command> to know more'
            telegram.send(chat, response)
            return
        if command in commands:
            try:
                commands[command].call(chat, author, arguments)
            except Exception as e:
                logging.info(request)
                logging.error(e, exc_info=True)
Exemplo n.º 18
0
 def call(self, chat, author, arguments):
     player = db.find_player_by_telegram_id(author)
     if player is None:
         telegram.send(
             chat,
             "Introduce yourself by providing your psn id: /r register <psn-id>"
         )
         return
     (event_type_code, date_code, time_code,
      comment) = self.parse_arguments(chat, arguments)
     event_type = db.find_type_by_code(event_type_code)
     if event_type is None:
         telegram.send(
             chat, "Event type not found: " + event_type_code +
             ", see available types: /r types")
         return
     if date_code == 'today':
         day = date.today()
     elif date_code == 'tomorrow':
         day = date.today() + timedelta(days=1)
     else:
         year = date.today().year
         day = datetime.strptime(date_code, '%d/%m')
         day = day.replace(year=year)
     if comment is None:
         comment = ""
     d = datetime.combine(day, datetime.strptime(time_code, '%H:%M').time())
     db.add_event(player, event_type.key.id(), d, comment)
     telegram.send(chat, "Event added")
Exemplo n.º 19
0
def telegram():
    data = request.json
    if 'message' in data and 'entities' in data['message']:
        if data["message"]["from"]["id"] not in ids:
            with open("registry.txt", "a") as file:
                file.write("{}\n".format(data["message"]["from"]["id"]))
                ids.append(data["message"]["from"]["id"])
        from_data = data['message']['from']
        chat_data = data['message']['chat']
        text = data['message']['text']
        if bool(
                re.match(
                    "\/(get #[0-9]+|post #[0-9]+ \*[\w \n]+|label #[0-9]+ [\w]+|close #[0-9]+)",
                    text)):
            admin("I receive a command")
            regex_match_execute(text, chat_data)
        elif text == "/start":
            template = "Hola soy Void un bot creado para controlarlos a todos.\n" \
                       " El repositorio DrMavrakis4ever es mi mision.\n" \
                       "Los comandos disponibles te los mostrara telegram al escribir /."
            send(template, chat_data)
    return "200 OK"
Exemplo n.º 20
0
 def call(self, chat, author, q):
     if self.google_search_key is None:
         self.google_search_key = db.get_key('google_search')
     data = {
         'key': self.google_search_key,
         'cx': '009373417816394415455:i3e_omr58us',
         'q': q.encode('utf-8'),
         'searchType': 'image',
         'num': 1
     }
     response = urlfetch.fetch(url='https://www.googleapis.com/customsearch/v1?' + urllib.urlencode(data), method=urlfetch.GET)
     items = json.loads(response.content)['items']
     if len(items) == 0:
         telegram.send(chat, "Nothing found")
         return
     image = items[0]
     image_url = image['link']
     image_response = urlfetch.fetch(image_url, method=urlfetch.GET)
     if image_response.status_code != 200:
         telegram.send(chat, "Error retrieving image")
         return
     image_name = urlparse.urlsplit(image_url).path.split('/')[-1]
     telegram.send_image(chat, image_response.content, image_name, image['mime'])
Exemplo n.º 21
0
 def call(self, chat, author, event_id):
     player = db.find_player_by_telegram_id(author)
     if player is None:
         telegram.send(chat, "Introduce yourself by providing your psn id: /register <psn-id>")
         return
     if db.join_event(player, event_id):
         telegram.send(chat, player.psn_id + ' joined event #' + event_id)
     else:
         telegram.send(chat, 'event is full')
Exemplo n.º 22
0
 def call(self, chat, author, psn_id):
     if psn_id is None:
         telegram.send(chat, "Specify your psn-id")
         return
     player = db.find_player_by_psn_id(psn_id)
     if player is None:
         telegram.send(chat, "Player with psn-id " + psn_id + " not found")
         return
     db.register_player_telegram(player, author)
     telegram.send(chat, psn_id + " registered")
Exemplo n.º 23
0
 def call(self, chat, author, psn_id):
     if psn_id is None:
         telegram.send(chat, "Specify your psn-id")
         return
     player = db.find_player_by_psn_id(psn_id)
     if player is None:
         telegram.send(chat, "Player with psn-id " + psn_id + " not found")
         return
     db.register_player_telegram(player, author)
     telegram.send(chat, psn_id + " registered")
Exemplo n.º 24
0
 def call(self, chat, author, arguments):
     player = db.find_player_by_telegram_id(author)
     if player is None:
         telegram.send(chat, "Introduce yourself by providing your psn id: /r register <psn-id>")
         return
     event_list = db.find_events()
     if len(event_list) == 0:
         telegram.send(author, "No events")
         return
     if arguments is not None:
         event_list = filter(lambda e: player.psn_id in e.participants, event_list)
     for e in event_list:
         telegram.send(chat, pretty_event(e))
Exemplo n.º 25
0
 def call(self, chat, author, arguments):
     player = db.find_player_by_telegram_id(author)
     if player is None:
         telegram.send(
             chat,
             "Introduce yourself by providing your psn id: /r register <psn-id>"
         )
         return
     event_list = db.find_events()
     if len(event_list) == 0:
         telegram.send(author, "No events")
         return
     if arguments is not None:
         event_list = filter(lambda e: player.psn_id in e.participants,
                             event_list)
     for e in event_list:
         telegram.send(chat, pretty_event(e))
Exemplo n.º 26
0
 def call(self, chat, author, arguments):
     player = db.find_player_by_telegram_id(author)
     if player is None:
         telegram.send(chat, "Introduce yourself by providing your psn id: /r register <psn-id>")
         return
     (event_type_code, date_code, time_code, comment) = self.parse_arguments(chat, arguments)
     event_type = db.find_type_by_code(event_type_code)
     if event_type is None:
         telegram.send(chat, "Event type not found: " + event_type_code + ", see available types: /r types")
         return
     if date_code == 'today':
         day = date.today()
     elif date_code == 'tomorrow':
         day = date.today() + timedelta(days=1)
     else:
         year = date.today().year
         day = datetime.strptime(date_code, '%d/%m')
         day = day.replace(year=year)
     if comment is None:
         comment = ""
     d = datetime.combine(day, datetime.strptime(time_code, '%H:%M').time())
     db.add_event(player, event_type.key.id(), d, comment)
     telegram.send(chat, "Event added")
Exemplo n.º 27
0
def recieve(request):
    (chat, author, message) = telegram.recieve(request)
    if message.startswith('/'):
        (command, arguments) = parse(message)
        if command == '/help':
            if arguments is not None:
                cmd = '/' + arguments
                if cmd not in commands:
                    telegram.send(chat, "Uknown command: " + str(arguments))
                    return
                telegram.send(chat, commands[cmd].help())
                return

            response = 'Commands:'
            for name, command in commands.iteritems():
                response += '\n' + name + ': ' + command.description()
            response += '\n\nType /help <command> to know more'
            telegram.send(chat, response)
            return
        if command in commands:
            try:
                commands[command].call(chat, author, arguments)
            except Exception as e:
                logging.error(e)
Exemplo n.º 28
0
 def call(self, chat, author, arguments):
     telegram.send(chat, arguments)
Exemplo n.º 29
0
 def call(self, chat, author, arguments):
     telegram.send(chat, arguments)
Exemplo n.º 30
0
 def call(self, chat, author, arguments):
     telegram.send(chat, arguments.encode('utf-8'))
Exemplo n.º 31
0
 def call(self, chat, author, cmd):
     (command, arguments) = dinklebot.parse(cmd)
     if command in self.commands:
         self.commands[command].call(chat, author, arguments)
         return
     telegram.send(chat, 'Uknown command: ' + command)
Exemplo n.º 32
0
 def call(self, chat, author, arguments):
     poll = db.get_poll(chat)
     if poll is None:
         telegram.send(chat, "No active poll")
         return
     pretty_results(chat, poll)
Exemplo n.º 33
0
 def call(self, chat, author, cmd):
     (command, arguments) = dinklebot.parse(cmd)
     if command in self.commands:
         self.commands[command].call(chat, author, arguments)
         return
     telegram.send(chat, 'Uknown command: ' + command)
Exemplo n.º 34
0
 def call(self, chat, author, arguments):
     telegram.send(chat, random.choice(self.quotes))
Exemplo n.º 35
0
 def call(self, chat, author, arguments):
     poll = db.get_poll(chat)
     if poll is None:
         telegram.send(chat, 'No active polls')
         return
     telegram.send(chat, pretty_poll(poll))
Exemplo n.º 36
0
  logs['chat'] = discord.sub('[Discord]', logs['chat'])
  logs['chat'] = message_prefix.sub(r'`\2\3: `', logs['chat'])
  logs['chat'] = admin_call.sub(r'\1 \[@' + conf.adminUsername + ']', logs['chat'])

for logType, logContent in logs.items():
  # remove color formatting
  logContent = re.sub('[\x1B][^m]*m', '', logContent)
  lines = logContent.splitlines()
  span = 20  # how many lines per message
  # join every <span> lines
  joinedLines = ['\n'.join(lines[r:r+span]) for r in range(0, len(lines), span)]

  # send logs to the respective chats
  for lines in joinedLines:
    if logType == 'console':  # console log
      tg.send(conf.token, conf.consoleID, lines)
    else:  # chat log
      tg.send(conf.token, conf.chatID, lines, 'Markdown')

try:
  with open('data/users.txt', 'r') as file:
    usersOnline = {line[:-1] for line in file}
except FileNotFoundError:
  usersOnline = set()

loginsAndLogouts = ''

# choose only lines with logging in and out
for line in logs['console'].splitlines():
  if 'logged in with entity id' in line:
    user = line.split('[',1)[0]
Exemplo n.º 37
0

while True:
    for update in call('getUpdates', **config['updates']):
        config['updates']['offset'] = update['update_id'] + 1
        if 'message' in update:
            m = update['message']
            text = m['text']
            username = m['from']['username']
            chat_id = m['chat']['id']
            user = get_user(username)
            if MODE_READ_LAST_MESSAGE == user['mode']:
                user['mode'] = MODE_NOTHING
                found = get_user(text)
                if found['last_message'] is not None:
                    send(chat_id,
                         'User %s said "%s"' % (text, found['last_message']))
                else:
                    send(chat_id, 'User %s said nothing' % text)
                continue
            if text.startswith('/'):
                if '/read' == text:
                    user['mode'] = MODE_READ_LAST_MESSAGE
                    send(chat_id, 'Please, enter an username')
                elif '/start' == text:
                    send(chat_id, 'Hi, %s!' % username)
                else:
                    send(chat_id, 'Unknown command "%s"' % text)
            else:
                print('%s: %s' % (username, text))
                user['last_message'] = text
            users[username] = user
Exemplo n.º 38
0
 def call(self, chat, author, arguments):
     if arguments is None:
         telegram.send(chat, "Add question")
         return
     db.add_poll(chat, arguments)
     telegram.send(chat, "Poll added, now add answers with /answer <answer>")