Exemple #1
0
    def silence(self, seconds=None, reason="", author=999):
        """
		Silences this user (db, packet and token)

		:param seconds: silence length in seconds. If None, get it from db. Default: None
		:param reason: silence reason. Default: empty string
		:param author: userID of who has silenced the user. Default: 999 (Your Bot Name lol)
		:return:
		"""
        if seconds is None:
            # Get silence expire from db if needed
            seconds = max(
                0,
                userUtils.getSilenceEnd(self.userID) - int(time.time()))
        else:
            # Silence in db and token
            userUtils.silence(self.userID, seconds, reason, author)

        # Silence token
        self.silenceEndTime = int(time.time()) + seconds

        # Send silence packet to user
        self.enqueue(serverPackets.silenceEndTime(seconds))

        # Send silenced packet to everyone else
        glob.streams.broadcast("main", serverPackets.userSilenced(self.userID))
Exemple #2
0
def silence(fro, chan, message):
    message = [x.lower() for x in message]
    target = message[0]
    amount = message[1]
    unit = message[2]
    reason = ' '.join(message[3:]).strip()
    if not reason:
        return "Please provide a valid reason."
    if not amount.isdigit():
        return "The amount must be a number."

    # Get target user ID
    targetUserID = userUtils.getIDSafe(target)
    userID = userUtils.getID(fro)

    # Make sure the user exists
    if not targetUserID:
        return "{}: user not found".format(target)

    # Calculate silence seconds
    if unit == 's':
        silenceTime = int(amount)
    elif unit == 'm':
        silenceTime = int(amount) * 60
    elif unit == 'h':
        silenceTime = int(amount) * 3600
    elif unit == 'd':
        silenceTime = int(amount) * 86400
    else:
        return "Invalid time unit (s/m/h/d)."

    # Max silence time is 7 days
    if silenceTime > 604800:
        return "Invalid silence time. Max silence time is 7 days."

    # Send silence packet to target if he's connected
    targetToken = glob.tokens.getTokenFromUsername(
        userUtils.safeUsername(target), safe=True)
    if targetToken is not None:
        # user online, silence both in db and with packet
        targetToken.silence(silenceTime, reason, userID)
    else:
        # User offline, silence user only in db
        userUtils.silence(targetUserID, silenceTime, reason, userID)

    # Log message
    msg = "{} has been silenced for the following reason: {}".format(
        target, reason)
    return msg
Exemple #3
0
def removeSilence(fro, chan, message):
	# Get parameters
	for i in message:
		i = i.lower()
	target = message[0]

	# Make sure the user exists
	targetUserID = userUtils.getIDSafe(target)
	userID = userUtils.getID(fro)
	if not targetUserID:
		return "{}: user not found".format(target)

	# Send new silence end packet to user if he's online
	targetToken = glob.tokens.getTokenFromUsername(userUtils.safeUsername(target), safe=True)
	if targetToken is not None:
		# User online, remove silence both in db and with packet
		targetToken.silence(0, "", userID)
	else:
		# user offline, remove islene ofnlt from db
		userUtils.silence(targetUserID, 0, "", userID)

	return "{}'s silence reset".format(target)