def _send_weather(self, room, user_id, message): latitude, longitude = self._get_coordinates(room, user_id) if not latitude or not longitude: room.send_text("Set your coordinates by using !setcoordinates [LATITUDE] [LONGITUDE].") return argument = command_utility.get_argument(message) if argument: days = argument.strip().split(" ") self._send_several_days_weather(room, latitude, longitude, days) return else: self._send_todays_weather(room, latitude, longitude) return
def _highlight_all(self, room, sender_user_id, message): user_ids = [user.user_id for user in room.get_joined_members()] argument = command_utility.get_argument(message) user_ids = self._remove_element(user_ids, sender_user_id) if user_ids: message = ", ".join(user_ids) logger.debug("Highlighting: {}".format(message)) if argument: room.send_text(message + ": " + argument) else: room.send_text(message) else: logger.debug("No users to highlight in room {}".format( room.room_id)) room.send_text("No users to highlight") return
def _add_coordinates(self, room, user_id, message): argument = command_utility.get_argument(message).strip() split_argument = re.split(';|,|\\s', argument, 1) latitude = split_argument[0].strip() longitude = split_argument[1].strip() conn = self.database.connect() cursor = conn.cursor() cursor.execute( "INSERT OR REPLACE INTO user_coordinates(ROOM_ID, USER_ID, LATITUDE, LONGITUDE) " "VALUES(?,?,?,?)", (room.room_id, user_id, latitude, longitude)) conn.commit() logger.debug( "Inserted Lat {} Long {} for user_id {} and room {} with id {}".format(latitude, longitude, user_id, room.room_id, cursor.lastrowid)) room.send_text("Coordinates set to {},{}.".format(latitude, longitude))
def _add_or_create_group(self, room, message): arguments = command_utility.get_argument(message).split() group = arguments[0].lower() users_to_add = arguments[1:] logger.debug("User wants to add {} to {}".format(users_to_add, group)) if group and len(users_to_add) > 0: for user in users_to_add: if not self.matrix.get_user(room, user): room.send_text("User: \"{}\" is not in room".format(user)) return new_members = [] with self.database.connect() as conn: for user in users_to_add: if self._is_in_group(conn, room.room_id, group, user): logger.debug( "User {} is already a member of group {} in room {}" .format(user, group, room.room_id)) else: cursor = conn.cursor() cursor.execute( "INSERT OR IGNORE INTO highlight_groups(ROOM_ID,GROUP_NAME,MEMBER) VALUES(?,?,?)", (room.room_id, group, user)) conn.commit() logger.debug( "Inserted {} into group {} with id {}".format( user, group, cursor.lastrowid)) new_members.append(user) if new_members: room.send_text("Added \"{}\" to group \"{}\"".format( ", ".join(new_members), group)) else: room.send_text("Could not add \"{}\" to group \"{}\"".format( ", ".join(users_to_add), group)) else: room.send_text( "Could not add: \"{}\" to group \"{}\". Syntax is incorrect". format(group, users_to_add)) return
def _highlight(self, room, sender_user_id, message): argument = command_utility.get_argument(message) if not argument: room.send_text("Correct syntax is !hl [group] [optional text].") return arguments = argument.split(None, 1) group = arguments[0].lower() member_user_ids = self._get_member_user_ids_except_sender( room, group, sender_user_id) if member_user_ids: members = ", ".join(member_user_ids) if len(arguments) > 1: argument = arguments[1] room.send_text(members + ": " + argument) else: room.send_text(members) else: room.send_text( "Group \"{}\" does not have any members to highlight".format( group))
def _delete_from_group(self, room, message): arguments = command_utility.get_argument(message).split() group = arguments[0].lower() members_to_remove = arguments[1:] logger.debug("User wants to remove {} from {}".format( members_to_remove, group)) if group and len(members_to_remove) > 0: for member in members_to_remove: if not self.matrix.get_user(room, member): room.send_text("User: {} is not in room".format(member)) return removed_members = [] with self.database.connect() as conn: for member in members_to_remove: if self._is_in_group(conn, room.room_id, group, member): cursor = conn.cursor() cursor.execute( "DELETE FROM highlight_groups WHERE room_id = ? AND group_name = ? and member = ?", (room.room_id, group, member)) conn.commit() removed_members.append(member) if removed_members: logger.debug("Removed {} from group {} in room {}".format( ", ".join(removed_members), group, room.room_id)) room.send_text("Removed \"{}\" from group \"{}\"".format( ", ".join(removed_members), group)) else: logger.debug( "Could not remove {} from group {} in room {}".format( ", ".join(members_to_remove), group, room.room_id)) room.send_text( "Could not remove \"{}\" from group \"{}\"".format( ", ".join(members_to_remove), group)) else: room.send_text( "Could not remove: \"{}\" from group \"{}\". Syntax is incorrect" .format(group, members_to_remove)) return