Exemple #1
0
    async def write_count(self, ctx: commands.context.Context):
        # 対象チャンネル以外でスルー
        if not Utils.check_channel(ctx.message):
            return

        context: Context = await Context.get_instance(self.bot)
        await ctx.channel.send(context.get_now_attack_count())
    async def _kill(self, message: discord.Message):

        # 対象チャンネル以外でスルー
        if not Utils.check_channel(message):
            return

        context: Context = await Context.get_instance(self.bot)
        clan_member: ClanMember = context.get_clan_member(message.author.id)

        # 凸終了処理
        await clan_member.finish(is_kill=True)
    async def check_edit(self, before_message: discord.Message,
                         after_message: discord.Message):
        # botの発言 / 自分へのメンション以外は無視
        if Utils.is_message_author_bot(after_message):
            return

        # 対象チャンネル以外でスルー
        if not Utils.check_channel(after_message):
            return

        await after_message.reply("このチャンネルでメッセージを削除・変更はしないでください。\n" +
                                  "もし間違って凸宣言をした場合は、リアクションかコマンドで取り消してください。")
    async def check_delete(self, message: discord.Message):
        # botの発言 / 自分へのメンション以外は無視
        if Utils.is_message_author_bot(message):
            return

        # 対象チャンネル以外でスルー
        if not Utils.check_channel(message):
            return

        await message.channel.send("{} \nこのチャンネルでメッセージを削除・変更はしないでください。\n".
                                   format(message.author.mention) +
                                   "もし間違って凸宣言をした場合は、リアクションかコマンドで取り消してください。")
    async def now_status(self, ctx: commands.context.Context):
        # botの発言 / 自分へのメンション以外は無視
        if Utils.is_message_author_bot(ctx.message):
            return

        # 対象チャンネル以外でスルー
        if not Utils.check_channel(ctx.message):
            return

        context: Context = await Context.get_instance(self.bot)
        return_message: str = context.get_now_attack_member()

        await ctx.message.channel.send("現在のボスに凸しているメンバーの一覧です。\n```\n {} \n```".format(return_message))
Exemple #6
0
    async def _cancel(self,
                      message: discord.Message,
                      is_force_reset: bool = False):
        # 対象チャンネル以外でスルー
        if not Utils.check_channel(message):
            return

        # クラメンデータ検索
        context: Context = await Context.get_instance(self.bot)
        clan_member: ClanMember = context.get_clan_member(message.author.id)

        # キャンセル処理
        await clan_member.cancel(is_force_reset)
Exemple #7
0
    async def use_task_kill(self, ctx: commands.context.Context):
        # botの発言 / 自分へのメンション以外は無視
        if Utils.is_message_author_bot(ctx.message):
            return

        # 対象チャンネル以外でスルー
        if not Utils.check_channel(ctx.message):
            return

        # クラメンデータ検索
        context: Context = await Context.get_instance(self.bot)
        clan_member: ClanMember = context.get_clan_member(
            ctx.message.author.id)

        # タスキル処理
        await clan_member.exec_task_kill(ctx.message)
    async def previous_status(self, ctx: commands.context.Context):
        # botの発言 / 自分へのメンション以外は無視
        if Utils.is_message_author_bot(ctx.message):
            return

        # 対象チャンネル以外でスルー
        if not Utils.check_channel(ctx.message):
            return

        # クラメンデータ検索
        context: Context = await Context.get_instance(self.bot)
        clan_member: ClanMember = context.get_clan_member(
            ctx.message.author.id)

        # ひとつ前に戻す処理
        await clan_member.previous_status(ctx.message)
Exemple #9
0
    async def _cancel(self, message: discord.Message):
        # 対象チャンネル以外でスルー
        if not Utils.check_channel(message):
            return

        # クラメンデータ検索
        context: Context = await Context.get_instance(self.bot)
        clan_member: ClanMember = context.get_clan_member(message.author.id)

        # キャンセル処理
        clan_member.cancel()
        return_message: str = "{} さんの{}凸目{}をキャンセルしました".format(
            clan_member.get_member_nickname(),
            clan_member.attack_status.attack_count + 1,
            "(持越し)" if clan_member.attack_status.is_carry_over else "")
        await message.channel.send(return_message)
Exemple #10
0
    async def command_alias(self, message: discord.Message):
        # botの発言 / 自分へのメンション以外は無視
        if Utils.is_message_author_bot(message):
            return

        # 対象チャンネル以外でスルー
        if not Utils.check_channel(message):
            return

        command_msg: str = message.content

        # 「a(スペース無し)数値」→「a」に変換 「凸(スペース無し)数値」→「凸」に変換 ※数値は半角or全角
        if re.match(r"^a[0-90123456789]+$", command_msg) or re.match(
                r"^凸[0-90123456789]+$", command_msg):
            ctx: commands.Context = await self.bot.get_context(message)
            cog: AttackCog = self.bot.get_cog("AttackCog")
            await cog.on_attack(ctx)
            # 変な文字列を送ってきたので燃やします
            await message.add_reaction(ClanBattleEmoji.FIRE)
Exemple #11
0
    async def on_attack(self, ctx: commands.context.Context):
        # botの発言 / 自分へのメンション以外は無視
        if Utils.is_message_author_bot(ctx.message):
            return

        # 対象チャンネル以外でスルー
        if not Utils.check_channel(ctx.message):
            return

        # クラメンデータ検索
        context: Context = await Context.get_instance(self.bot)
        clan_member: ClanMember = context.get_clan_member(ctx.author.id)

        # 凸のデータ保存
        clan_member.attack(ctx.message)

        # メッセージに対してリアクションを送出する
        await ctx.message.add_reaction(ClanBattleEmoji.END)
        await ctx.message.add_reaction(ClanBattleEmoji.KILL)
        await ctx.message.add_reaction(ClanBattleEmoji.CANCEL)
Exemple #12
0
    async def _finish(self, message: discord.Message):
        # 対象チャンネル以外でスルー
        if not Utils.check_channel(message):
            return

        # クラメンデータ検索
        context: Context = await Context.get_instance(self.bot)
        clan_member: ClanMember = context.get_clan_member(message.author.id)

        # hack: 更新前に今の状態をもとに返すメッセージを作成する
        return_message: str = "{} さんの{}凸目{}を終了しました".format(
            clan_member.get_member_nickname(),
            clan_member.attack_status.attack_count + 1,
            "(持越し)" if clan_member.attack_status.is_carry_over else "")

        # 終了処理
        clan_member.finish(is_kill=False)
        await message.channel.send(return_message)

        # 凸状態が変わるのでニックネーム修正
        await clan_member.update_member_name()