Source code for cytube_bot.channel

import logging

from .playlist import Playlist
from .user import UserList
from .error import ChannelPermissionError


[docs]class Channel: """CyTube channel. Attributes ---------- name : `str` password : `str` or `None` drink_count : `int` voteskip_count: `int` voteskip_need: `int` motd: `str` css: `str` js: `str` emotes: `list` of `dict` permissions : `dict` of (`str`, `float`) options : `dict` userlist : `cytube_bot.user.UserList` playlist : `cytube_bot.playlist.Playlist` """ logger = logging.getLogger(__name__) RANK_PRECISION = 1e-4
[docs] def __init__(self, name='', password=None): self.name = name self.password = password self.drink_count = 0 self.voteskip_count = 0 self.voteskip_need = 0 self.motd = '' self.css = '' self.js = '' self.emotes = [] self.permissions = {} self.options = {} self.userlist = UserList() self.playlist = Playlist()
def __str__(self): return '<channel "%s">' % self.name __repr__ = __str__
[docs] def check_permission(self, action, user, throw=True): """Check if user has permission. Parameters ---------- action : `str` Permission to check. user : `cytube_bot.user.User` User. throw : `bool`, optional `True` to raise exception if user does not have permission. Returns ------- `bool` `True` if user has permission. Raises ------ ChannelPermissionError If user does not have permission. ValueError If permission does not exist. """ try: min_rank = self.permissions[action] if user.rank + self.RANK_PRECISION < min_rank: if throw: raise ChannelPermissionError( '"%s": permission denied (%s rank %.2f < %.2f)' % (action, user.name, user.rank, min_rank) ) return False return True except KeyError: raise ValueError('unknown action "%s"' % action)
[docs] def has_permission(self, action, user): """check_permission(action, user, False) """ return self.check_permission(action, user, False)