Пример #1
0
    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
Пример #2
0
 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
Пример #3
0
    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))
Пример #4
0
    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
Пример #5
0
    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))
Пример #6
0
    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