示例#1
0
    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)
示例#2
0
	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)
示例#3
0
	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)
示例#4
0
	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)
示例#5
0
    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
示例#6
0
	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