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'])
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")
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)
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")
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)
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)))
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'])
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
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")
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"
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)))
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))
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
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)
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")
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)
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")
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"
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'])
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')
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")
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))
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))
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")
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)
def call(self, chat, author, arguments): telegram.send(chat, arguments)
def call(self, chat, author, arguments): telegram.send(chat, arguments.encode('utf-8'))
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)
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)
def call(self, chat, author, arguments): telegram.send(chat, random.choice(self.quotes))
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))
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]
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
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>")