Пример #1
0
    def returnPresent(guild_id: int, role_list: list, class_list: list):
        """
        Return presents and absents students who have reacted on a message
        """
        class_list.sort(key=lambda x: Tools.name(x).lower())
        role_list.sort(key=lambda x: Tools.name(x).lower())
        messages = Server(guild_id).returnLanguage("endcall")

        presents_msg = messages[0]
        absents_msg = str()
        students = []

        for member in class_list:
            if member.id not in students:
                presents_msg += f"• *{Tools.name(member)}* <@{member.id}>\n"  # [user.display_name,user.id]
                students.append(member.id)
                if role_list is not None:
                    role_list.remove(member)
        # if there is no more people
        if not role_list:
            absents_msg += messages[2]
        # if there is still people
        else:
            absents_msg = "\n" + messages[1]
            for member in role_list:
                absents_msg += f"• *{Tools.name(member)}* <@{member.id}>\n"
        return presents_msg, absents_msg, role_list, students
Пример #2
0
    async def Send_MP_absents(self, absents: list, message: discord.Message,
                              delay: int, teacher: discord.User):
        """
        Send a mp message to all absents
        """
        language_msg = Server(message.guild.id).returnLanguage("sendabsents")

        embed = discord.Embed(color=discord.Colour.red(), title="Absence")
        embed.set_author(name=Tools.name(message.author),
                         icon_url=message.author.avatar_url)
        embed.add_field(name=language_msg[0], value=Tools.name(message.author))
        embed.add_field(name=language_msg[1], value=message.guild)
        embed.add_field(name=language_msg[2], value=message.guild)
        embed.add_field(name="Date", value=date.today().strftime("%d/%m/%Y"))
        embed.add_field(name=language_msg[3][0],
                        value=f"[{language_msg[3][1]}]({message.jump_url})")
        missing = {}
        for member in absents:
            try:
                await member.send(embed=embed)
                if delay:
                    time = datetime.now()
                    message = await member.send(
                        "Click on the emote below to automatically send a late ticket message to the teacher."
                    )
                    await message.add_reaction("⏰")
                    missing[message.id] = LateStudent(teacher, member, message)
            except discord.errors.Forbidden:
                await teacher.send(
                    f"Unable to send a late ticket to {member.mention}")
        return missing
Пример #3
0
    async def Send_MP_absents(self, absents: list, entry: str,
                              message: discord.Message, delay: int):
        """
        Send a mp message to all absents
        """
        language_msg = returnLanguage(
            readGuild(message.guild.id)["language"], "sendabsents")

        embed = discord.Embed(color=discord.Colour.red(), title="Absence")
        embed.set_author(name=Tools.name(message.author),
                         icon_url=message.author.avatar_url)
        embed.add_field(name=language_msg[0], value=Tools.name(message.author))
        embed.add_field(name=language_msg[1], value=message.guild)
        embed.add_field(name=language_msg[2], value=message.guild)
        embed.add_field(name="Date", value=date.today().strftime("%d/%m/%Y"))
        embed.add_field(name=language_msg[3][0],
                        value=f"[{language_msg[3][1]}]({message.jump_url})")

        if delay:
            embed.add_field(
                name="Time on receipt of the message to report late",
                value=f"{delay} minutes")
        for member in absents:
            await member.send(embed=embed)
            if delay:
                message = await member.send(
                    "Click to send a message to the teacher that you're late")
                await message.add_reaction("⏰")
                self.missing[message.id] = entry
Пример #4
0
    async def Call(self, context, classroom, showAll: bool):
        class_role = Tools.convert(classroom)
        data = readGuild(context.guild.id)
        if class_role is None:
            await Tools.embedError("This is not a role, but a specific user")
        else:
            if Tools.got_the_role(data["teacher"], context.author):
                self.callList[
                    f"{context.guild.id}-{context.message.id}"] = Check(
                        class_role, context.message.author, showAll,
                        data["delay"] if data["delay"] > 0 else 0)
                message = returnLanguage(data["language"], "startcall")

                embed = discord.Embed(color=discord.Colour.green(),
                                      title=message[0],
                                      description=message[1])
                embed.set_author(name=Tools.name(context.message.author),
                                 icon_url=context.message.author.avatar_url)
                embed.add_field(name=f"**__{message[2]}__**", value=classroom)
                embed.add_field(name="Date",
                                value=date.today().strftime("%d/%m/%Y"))
                embed.set_footer(text=message[3])

                await context.channel.send(embed=embed)
                await context.message.add_reaction(
                    "✅")  # on rajoute les réactions ✅ & 🆗
                await context.message.add_reaction("🆗")
                await context.message.add_reaction("🛑")
            else:
                await context.channel.send("<@{}> : {}".format(
                    context.author.id,
                    returnLanguage(data["language"], "notTeacher")))
Пример #5
0
    async def Call(self, context, args: tuple):
        classroom = context.message.role_mentions
        data = Server(context.guild.id)
        showAll = '-a' in args
        try:
            if len(classroom) != 1:
                await Tools.SendError(context.channel,
                                      "Please precise **one** role to call")
                return None

            delay = data.delay if data.delay > 0 else 0
            if '-d' in args:
                delay = int(args[args.index('-d') + 1])
                if delay > 60 or delay < 0:
                    raise ValueError

            message = data.GetLanguage().startcall

            embed = discord.Embed(color=discord.Colour.green(),
                                  title=message[0],
                                  description=message[1])
            embed.set_author(name=Tools.name(context.message.author),
                             icon_url=context.message.author.avatar_url)
            embed.add_field(name=f"**__{message[2]}__**",
                            value=classroom[0].mention)
            embed.add_field(name="Date",
                            value=date.today().strftime("%d/%m/%Y"))
            embed.add_field(name="Number of students in this class",
                            value=str(len(classroom[0].members)))
            # embed.add_field()
            embed.set_footer(text=message[3])

            Botmessage = await context.channel.send(embed=embed)
            await Botmessage.add_reaction("✅"
                                          )  # on rajoute les réactions ✅ & 🆗
            await Botmessage.add_reaction("🆗")
            await Botmessage.add_reaction("🛑")

            self.callList[f"{context.guild.id}-{Botmessage.id}"] = Check(
                classroom[0], Botmessage, showAll, delay, context.author)

            return Botmessage
        except (ValueError, IndexError):
            raise Exception("Invalid Args")