Esempio n. 1
0
    async def handleMessage(self, twitchUser: User, message: Message) -> bool:
        if twitchUser is None:
            raise ValueError(
                f'twitchUser argument is malformed: \"{twitchUser}\"')
        elif message is None:
            raise ValueError(f'message argument is malformed: \"{message}\"')

        generalSettings = await self.__generalSettingsRepository.getAllAsync()

        if not generalSettings.isCatJamMessageEnabled():
            return False
        elif not twitchUser.isCatJamEnabled():
            return False

        splits = utils.getCleanedSplits(message.content)

        if self.__catJamMessage in splits and self.__lastCatJamMessageTimes.isReadyAndUpdate(
                twitchUser.getHandle()):
            await twitchUtils.safeSend(message.channel, self.__catJamMessage)
            self.__timber.log(
                'CatJamMessage',
                f'Handled catJAM message for {message.author.name} in {twitchUser.getHandle()}'
            )
            return True

        return False
Esempio n. 2
0
    async def handlePointRedemption(self, twitchChannel: Channel,
                                    twitchUser: User, redemptionMessage: str,
                                    rewardId: str, userIdThatRedeemed: str,
                                    userNameThatRedeemed: str) -> bool:
        if twitchChannel is None:
            raise ValueError(
                f'twitchChannel argument is malformed: \"{twitchChannel}\"')
        elif twitchUser is None:
            raise ValueError(
                f'twitchUser argument is malformed: \"{twitchUser}\"')
        elif not utils.isValidStr(rewardId):
            raise ValueError(f'rewardId argument is malformed: \"{rewardId}\"')
        elif not utils.isValidStr(userIdThatRedeemed):
            raise ValueError(
                f'userIdThatRedeemed argument is malformed: \"{userIdThatRedeemed}\"'
            )
        elif not utils.isValidStr(userNameThatRedeemed):
            raise ValueError(
                f'userNameThatRedeemed argument is malformed: \"{userNameThatRedeemed}\"'
            )

        if not twitchUser.isPkmnEnabled():
            return False

        splits = utils.getCleanedSplits(redemptionMessage)
        if not utils.hasItems(splits):
            await twitchUtils.safeSend(
                twitchChannel,
                f'⚠ Sorry @{userNameThatRedeemed}, you must specify the exact user name of the person you want to fight'
            )
            return False

        opponentUserName = utils.removePreceedingAt(splits[0])
        generalSettings = await self.__generalSettingsRepository.getAllAsync()
        actionCompleted = False

        if generalSettings.isFuntoonApiEnabled():
            if await self.__funtoonRepository.pkmnBattle(
                    userThatRedeemed=userNameThatRedeemed,
                    userToBattle=opponentUserName,
                    twitchChannel=twitchUser.getHandle()):
                actionCompleted = True

        if not actionCompleted and generalSettings.isFuntoonTwitchChatFallbackEnabled(
        ):
            await twitchUtils.safeSend(
                twitchChannel,
                f'!battle {userNameThatRedeemed} {opponentUserName}')
            actionCompleted = True

        self.__timber.log(
            'PkmnBattleRedemption',
            f'Redeemed pkmn battle for {userNameThatRedeemed}:{userIdThatRedeemed} in {twitchUser.getHandle()}'
        )
        return actionCompleted