async def on_subscriber(self, conn, channel, user, eventtime, logo=None, monthcount=None, message=None, emotes=None): log.info('New subscriber: %r at %r', user, eventtime) if user.lower() in self.last_announced_subs: return data = { 'name': user, } if logo is None: try: channel_info = twitch.get_info_uncached(user) except utils.PASSTHROUGH_EXCEPTIONS: raise except Exception: pass else: if channel_info.get('logo'): data['avatar'] = channel_info['logo'] else: data['avatar'] = logo self.last_announced_subs.append(user.lower()) self.last_announced_subs = self.last_announced_subs[-10:] users = self.lrrbot.metadata.tables["users"] with self.lrrbot.engine.begin() as pg_conn: pg_conn.execute(users.update().where(users.c.name == user), is_sub=True) if message is not None: data['message'] = message data['messagehtml'] = await chatlog.format_message(message, emotes, [], cheer=False) if monthcount is not None and monthcount > 1: event = "twitch-resubscription" data['monthcount'] = monthcount data['count'] = common.storm.increment(self.lrrbot.engine, self.lrrbot.metadata, event) else: event = "twitch-subscription" data['count'] = common.storm.increment(self.lrrbot.engine, self.lrrbot.metadata, event) storm_count = common.storm.get_combined(self.lrrbot.engine, self.lrrbot.metadata) conn.privmsg( channel, "lrrSPOT Thanks for subscribing, %s! (Today's storm count: %d)" % (data['name'], storm_count)) await common.rpc.eventserver.event(event, data, eventtime)
async def on_subscriber(self, conn, channel, login, user, eventtime, logo=None, monthcount=None, message=None, emotes=None, benefactor_login=None, benefactor=None, streak=None): log.info('New subscriber: %r at %r', user, eventtime) now = time.time() for k in [k for k, v in self.recent_announced_subs.items() if v < now - DEBOUNCE_INTERVAL]: del self.recent_announced_subs[k] if login in self.recent_announced_subs: log.info('Debouncing subscriber %r', user) return self.recent_announced_subs[login] = now data = { 'name': user, 'benefactor': benefactor, 'streak': streak, } if logo is None: try: channel_info = twitch.get_info_uncached(login) except utils.PASSTHROUGH_EXCEPTIONS: raise except Exception: pass else: if channel_info.get('logo'): data['avatar'] = channel_info['logo'] else: data['avatar'] = logo users = self.lrrbot.metadata.tables["users"] with self.lrrbot.engine.begin() as pg_conn: pg_conn.execute(users.update().where(users.c.name == login), is_sub=True) if message is not None: data['message'] = message data['messagehtml'] = await chatlog.format_message(message, emotes, [], cheer=False) if monthcount > 1: event = "twitch-resubscription" data['monthcount'] = monthcount data['count'] = common.storm.increment(self.lrrbot.engine, self.lrrbot.metadata, event) else: event = "twitch-subscription" data['count'] = common.storm.increment(self.lrrbot.engine, self.lrrbot.metadata, event) if benefactor_login in self.multi_gifts: multi_gift = self.multi_gifts[benefactor_login] data['ismulti'] = True multi_gift['subscribers'].append(data) multi_gift['remaining'] -= 1 log.debug("Remaining gifts for %s: %d", benefactor, multi_gift['remaining']) if multi_gift['remaining'] <= 0: await self.on_multi_gift_end(conn, channel, multi_gift) else: data['ismulti'] = False storm_count = common.storm.get_combined(self.lrrbot.engine, self.lrrbot.metadata) conn.privmsg(channel, "lrrSPOT Thanks for subscribing, %s! (Today's storm count: %d)" % (data['name'], storm_count)) await common.rpc.eventserver.event(event, data, eventtime)
async def on_subscriber(self, conn, channel, login, user, eventtime, logo=None, monthcount=None, message=None, emotes=None, benefactor_login=None, benefactor=None): log.info('New subscriber: %r at %r', user, eventtime) now = time.time() for k in [k for k, v in self.recent_announced_subs.items() if v < now - DEBOUNCE_INTERVAL]: del self.recent_announced_subs[k] if login in self.recent_announced_subs: log.info('Debouncing subscriber %r', user) return self.recent_announced_subs[login] = now data = { 'name': user, 'benefactor': benefactor, } if logo is None: try: channel_info = twitch.get_info_uncached(login) except utils.PASSTHROUGH_EXCEPTIONS: raise except Exception: pass else: if channel_info.get('logo'): data['avatar'] = channel_info['logo'] else: data['avatar'] = logo users = self.lrrbot.metadata.tables["users"] with self.lrrbot.engine.begin() as pg_conn: pg_conn.execute(users.update().where(users.c.name == login), is_sub=True) if message is not None: data['message'] = message data['messagehtml'] = await chatlog.format_message(message, emotes, [], cheer=False) if monthcount > 1: event = "twitch-resubscription" data['monthcount'] = monthcount data['count'] = common.storm.increment(self.lrrbot.engine, self.lrrbot.metadata, event) else: event = "twitch-subscription" data['count'] = common.storm.increment(self.lrrbot.engine, self.lrrbot.metadata, event) if benefactor_login in self.multi_gifts: multi_gift = self.multi_gifts[benefactor_login] data['ismulti'] = True multi_gift['subscribers'].append(data) multi_gift['remaining'] -= 1 log.debug("Remaining gifts for %s: %d", benefactor, multi_gift['remaining']) if multi_gift['remaining'] <= 0: await self.on_multi_gift_end(conn, channel, multi_gift) else: data['ismulti'] = False storm_count = common.storm.get_combined(self.lrrbot.engine, self.lrrbot.metadata) conn.privmsg(channel, "lrrSPOT Thanks for subscribing, %s! (Today's storm count: %d)" % (data['name'], storm_count)) await common.rpc.eventserver.event(event, data, eventtime)
async def on_subscriber(self, conn, channel, user, eventtime, logo=None, monthcount=None, message=None): log.info('New subscriber: %r at %r', user, eventtime) if user.lower() in self.last_announced_subs: return data = { 'name': user, } if logo is None: try: channel_info = twitch.get_info_uncached(user) except utils.PASSTHROUGH_EXCEPTIONS: raise except Exception: pass else: if channel_info.get('logo'): data['avatar'] = channel_info['logo'] else: data['avatar'] = logo self.last_announced_subs.append(user.lower()) self.last_announced_subs = self.last_announced_subs[-10:] users = self.lrrbot.metadata.tables["users"] with self.lrrbot.engine.begin() as pg_conn: pg_conn.execute(users.update().where(users.c.name == user), is_sub=True) if message is not None: data['message'] = message if monthcount is not None and monthcount > 1: event = "twitch-resubscription" data['monthcount'] = monthcount data['count'] = common.storm.increment(self.lrrbot.engine, self.lrrbot.metadata, event) conn.privmsg(channel, "lrrSPOT Thanks for subscribing, %s! (Today's delirium count: %d)" % (data['name'], data['count'])) else: event = "twitch-subscription" data['count'] = common.storm.increment(self.lrrbot.engine, self.lrrbot.metadata, event) conn.privmsg(channel, "lrrSPOT Thanks for subscribing, %s! (Today's storm count: %d)" % (data['name'], data['count'])) await common.rpc.eventserver.event(event, data, eventtime)
def on_multi_gift_start(self, login, user, eventtime, subcount, logo=None): data = { 'login': login, 'name': user, 'subcount': subcount, 'remaining': subcount, 'subscribers': [], 'eventtime': eventtime, } if logo is None: try: channel_info = twitch.get_info_uncached(login) except utils.PASSTHROUGH_EXCEPTIONS: raise except Exception: pass else: if channel_info.get('logo'): data['avatar'] = channel_info['logo'] else: data['avatar'] = logo self.multi_gifts[login] = data