Beispiel #1
0
 async def voicechannel_invite(self, ctx, wer: typing.Union[Member, Role]):
     channel = await self.get_voice_channel(ctx.author)
     if not channel:
         raise ErrorMessage(message="Du hast noch keinen Sprachkanal!")
     await channel.set_permissions(
         wer,
         reason="Benuter hat Benutzer/Rolle eingeladen",
         read_messages=True,
         connect=True,
         speak=True)
     if isinstance(wer, Member):
         #EMBED = ctx.getEmbed(title="Benutzer zu Sprachkanal eingeladen", fields=[("Server", ctx.guild.name),("Benutzer", wer.mention)])
         # await ctx.author.send(embed=EMBED)
         if not wer.bot:
             EMBED2 = ctx.getEmbed(
                 title="Du wurdest zu einem Sprachkanal eingeladen",
                 fields=[("Server", ctx.guild.name),
                         ("Von", ctx.author.mention)])
             await wer.send(embed=EMBED2)
         raise SuccessMessage("Benutzer zu Sprachkanal eingeladen",
                              fields=[("Benutzer", wer.mention)])
     if isinstance(wer, Role):
         #EMBED = ctx.getEmbed(title="Rolle zu Sprachkanal eingeladen", fields=[("Server", ctx.guild.name),("Rolle", wer.name)])
         # await ctx.author.send(embed=EMBED)
         await ctx.send("Alle mit der Rolle " + wer.mention +
                        " wurden von " + ctx.author.mention +
                        " zu seinem/ihrem Sprachkanal eingeladen.")
         raise SuccessMessage("Rolle zu Sprachkanal eingeladen",
                              fields=[("Rolle", wer.name)])
 async def reports_delete(self, ctx, *repids: int):
     successids = []
     for repid in repids:
         if await ctx.database.deleteReport(repid=repid):
             successids.append(f'#{repid}')
     if not successids:
         raise ErrorMessage(
             f"Report mit der ID {repid} wurde nicht gefunden!")
     if len(successids) > 1:
         raise SuccessMessage(
             f"Reports mit folgenden IDs gelöscht: {successids}")
     raise SuccessMessage(f"Report #{repid} gelöscht!")
 async def kill(self, ctx, member: Member, *args):
     Grund = " ".join(args)
     if Grund.rstrip() == "":
         Grund = "Leer"
     VoiceState = member.voice
     if VoiceState:
         if VoiceState.channel.permissions_for(ctx.author).move_members:
             if VoiceState.channel.permissions_for(
                     ctx.guild.get_member(self.bot.user.id)).move_members:
                 if ctx.author.roles[-1] >= member.roles[-1]:
                     await member.edit(
                         voice_channel=None,
                         reason="Von Moderator " + ctx.author.name + "#" +
                         ctx.author.discriminator + " angefordert: " +
                         Grund)
                     raise SuccessMessage("Benutzer Getötet",
                                          fields=[("Betroffener",
                                                   member.mention),
                                                  ("Grund", Grund)])
                 raise ErrorMessage(
                     message=
                     "Deine Rolle ist nicht höher als oder gleich wie die des Benutzers, den du töten wolltest!"
                 )
             raise commands.BotMissingPermissions([])
         raise commands.MissingPermissions([])
     raise ErrorMessage(
         message="Der Benutzer befindet sich nicht in einem Sprachkanal.")
 async def reports_create(self, ctx, member: Member, *args):
     Grund = " ".join(args)
     Grund = Grund if Grund.rstrip(" ") else "Leer"
     report = await ctx.database.createReport(dc_user=member, reason=Grund)
     await self.send_report(ctx, report)
     raise SuccessMessage("Benutzer Gemeldet",
                          fields=[("Betroffener", member.mention),
                                  ("Grund", Grund)])
Beispiel #5
0
 async def viergewinnt_reset(self,
                             ctx,
                             user: typing.Union[User, Member] = None):
     user = ctx.author if user is None else user if await self.bot.is_owner(
         user) else ctx.author
     await ctx.database._listdelete(VierGewinntGame,
                                    player_1_id=str(user.id))
     raise SuccessMessage(
         f"Die VierGewinnt Spiele von { user.mention } wurden erfolgreich gelöscht!"
     )
Beispiel #6
0
 async def textchannel_open(self, ctx):
     channel = await self.get_text_channel(ctx)
     if not channel:
         raise ErrorMessage(message="Du hast noch keinen Textkanal!")
     await channel.set_permissions(
         ctx.guild.default_role,
         reason="Benuter hat den Kanal für alle Geöffnet",
         read_messages=True,
         send_messages=True)
     raise SuccessMessage(
         "Der Kanal ist nun für alle auf diesem Server geöffnet!")
 async def remote_allowraw(self, ctx, id: int):
     if not await ctx.database._has(BotPermission,
                                    id_1=str(ctx.author.id),
                                    id_2=str(id),
                                    typ="remote_permission"):
         await ctx.database._create(BotPermission,
                                    id_1=str(ctx.author.id),
                                    id_2=str(id),
                                    typ="remote_permission")
         raise SuccessMessage(
             str(id) + " darf nun Befehle für dich ausführen!")
     raise ErrorMessage("Diese ID darf bereits Befehle für dich ausführen!")
Beispiel #8
0
 async def voicechannel_open(self, ctx):
     channel = await self.get_voice_channel(ctx.author)
     if not channel:
         raise ErrorMessage(message="Du hast noch keinen Sprachkanal!")
     await channel.set_permissions(
         ctx.guild.default_role,
         reason="Benuter hat den Kanal für alle geöffnet",
         read_messages=True,
         connect=True,
         speak=True)
     raise SuccessMessage(
         "Der Sprachkanal ist nun für alle auf diesem Server geöffnet!")
 async def remote_disallowraw(self, ctx, id: int):
     if await ctx.database._has(BotPermission,
                                id_1=str(ctx.author.id),
                                id_2=str(id),
                                typ="remote_permission"):
         await ctx.database._listdelete(BotPermission,
                                        id_1=str(ctx.author.id),
                                        id_2=str(id),
                                        typ="remote_permission")
         raise SuccessMessage(
             str(id) + " darf nun nicht mehr Befehle für dich ausführen!")
     raise ErrorMessage("Diese ID steht nicht auf deiner Liste!")
 async def remote_disallow(self, ctx, member: typing.Union[Member, User]):
     if await ctx.database._has(BotPermission,
                                id_1=str(ctx.author.id),
                                id_2=str(member.id),
                                typ="remote_permission"):
         await ctx.database._listdelete(BotPermission,
                                        id_1=str(ctx.author.id),
                                        id_2=str(member.id),
                                        typ="remote_permission")
         raise SuccessMessage(
             member.mention +
             " darf nun nicht mehr Befehle für dich ausführen!")
     raise ErrorMessage("Dieser Benutzer steht nicht auf deiner Liste!")
 async def remote_allow(self, ctx, member: typing.Union[Member, User]):
     if not await ctx.database._has(BotPermission,
                                    id_1=str(ctx.author.id),
                                    id_2=str(member.id),
                                    typ="remote_permission"):
         await ctx.database._create(BotPermission,
                                    id_1=str(ctx.author.id),
                                    id_2=str(member.id),
                                    typ="remote_permission")
         raise SuccessMessage(member.mention +
                              " darf nun Befehle für dich ausführen!")
     raise ErrorMessage(
         "Dieser Benutzer darf bereits Befehle für dich ausführen!")
Beispiel #12
0
    async def textchannel_delete(self, ctx):
        channel = await self.get_text_channel(ctx)
        if channel:
            await channel.delete(reason="Benutzer hat den Textkanal gelöscht")

            member = await ctx.database.get_member()
            member.setSetting("CHANNELS_TEXT_ID", None)
            await ctx.database._save(member)

            if not ctx.channel == channel:
                raise SuccessMessage("Textkanal gelöscht")
        else:
            raise ErrorMessage(message="Du hattest gar keinen Textkanal!")
 async def ban(self, ctx, member: Member, *args):
     if not ctx.author.roles[-1] > member.roles[-1]:
         raise ErrorMessage(
             message=
             "Deine Rolle ist nicht höher als die des Benutzers, den du bannen wolltest!"
         )
     Grund = " ".join(args)
     if Grund.rstrip() == "":
         Grund = "Leer"
     await member.ban(reason="Von Moderator " + ctx.author.name + "#" +
                      ctx.author.discriminator + " angefordert: " + Grund)
     raise SuccessMessage("Benutzer Gebannt",
                          fields=[("Betroffener", member.mention),
                                  ("Grund", Grund)])
Beispiel #14
0
 async def textchannel_invite(self, ctx, wer: typing.Union[Member, Role]):
     channel = await self.get_text_channel(ctx)
     if not channel:
         raise ErrorMessage(message="Du hast noch keinen Textkanal!")
     await channel.set_permissions(
         wer,
         reason="Benuter hat Benutzer/Rolle eingeladen",
         read_messages=True,
         send_messages=True)
     if isinstance(wer, Member):
         #EMBED = ctx.getEmbed(title="Benutzer zu Textkanal eingeladen", fields=[("Server", ctx.guild.name), ("Benutzer", wer.mention)])
         # await ctx.author.send(embed=EMBED)
         await channel.send(wer.mention +
                            " wurde zu diesem Textkanal hinzugefügt.")
         raise SuccessMessage("Benutzer zu Textkanal eingeladen",
                              fields=[("Benutzer", wer.mention)])
     if isinstance(wer, Role):
         #EMBED = ctx.getEmbed(title="Rolle zu Textkanal eingeladen", fields=[("Server", ctx.guild.name), ("Rolle", wer.name)])
         # await ctx.author.send(embed=EMBED)
         await channel.send("Alle mit der Rolle " + wer.mention +
                            " wurden zu diesem Textkanal hinzugefügt.")
         raise SuccessMessage("Rolle zu Textkanal eingeladen",
                              fields=[("Rolle", wer.name)])
Beispiel #15
0
        async def volume(self, ctx, newvolume: float = None):
            if not ctx.voice_client.source:
                raise ErrorMessage(
                    "Der Bot scheint aktuell nichts abzuspielen.")

            oldvolume = ctx.voice_client.source.volume * 100

            if newvolume is None:
                await ctx.sendEmbed(title="Lautstärke",
                                    fields=[("Aktuell", str(oldvolume) + "%")])
            else:
                ctx.voice_client.source.volume = newvolume / 100

                raise SuccessMessage("Lautstärke geändert",
                                     fields=[("Zuvor", str(oldvolume) + "%"),
                                             ("Jetzt", str(newvolume) + "%")])
 async def unban(self, ctx, userid: int, *args):
     Grund = " ".join(args)
     if Grund.rstrip() == "":
         Grund = "Leer"
     user = self.bot.get_user(userid)
     if user is None:
         raise ErrorMessage(message="Benutzer wurde nicht gefunden!")
     try:
         await ctx.guild.unban(user,
                               reason="Von Moderator " + ctx.author.name +
                               "#" + ctx.author.discriminator +
                               " angefordert: " + Grund)
         raise SuccessMessage("Benutzer Entbannt",
                              fields=[("Betroffener", user.mention),
                                      ("Grund", Grund)])
     except DiscordException:
         raise ErrorMessage(message="Benutzer wurde nicht gefunden!")
Beispiel #17
0
    async def amongus_reset(self, ctx):
        if await ctx.database.hasAmongUsGame():
            game = await ctx.database.getAmongUsGame()
            voicechannel = ctx.guild.get_channel(int(game.voice_channel_id))

            if voicechannel is None:
                raise ErrorMessage(
                    message=
                    "Der Sprachkanal zu deinem Spiel wurde nicht gefunden. Versuche dein Spiel mit `/amongus close` zu löschen"
                )

            game.reset()
            await ctx.database._save(game)
            await voicechannel.edit(sync_permissions=True)
            raise SuccessMessage(
                "Dein AmongUs Spiel wurde erfolgreich zurückgesetzt!")
        raise ErrorMessage(
            message="Du hast kein AmongUs-Spiel auf diesem Server!")
Beispiel #18
0
 async def channelsetup(self, ctx):
     category = await getUserChannelCategory(ctx.guild)
     if category:
         raise ErrorMessage(
             "Kategorie existiert bereits! Lösche sie zuerst um sie neu aufzusetzen!"
         )
     categoryoverwrites = {
         ctx.guild.default_role:
         PermissionOverwrite(read_messages=False,
                             send_messages=False,
                             connect=False,
                             speak=False,
                             move_members=False,
                             use_voice_activation=True)
     }
     textchanneloverwrites = {
         ctx.guild.default_role:
         PermissionOverwrite(read_messages=True, send_messages=True)
     }
     voicechanneloverwrites = {
         ctx.guild.default_role:
         PermissionOverwrite(view_channel=True, connect=True, speak=False)
     }
     category = await ctx.guild.create_category_channel(
         name=CATEGORY_NAME,
         overwrites=categoryoverwrites,
         reason="Bereite Benutzerkanäle vor...")
     await category.create_text_channel(
         name=CHANNEL_NAME_TEXT,
         overwrites=textchanneloverwrites,
         reason="Bereite Benutzerkanäle vor...",
         topic="Hilfe: /help channels")
     await category.create_voice_channel(
         name=CHANNEL_NAME_PUBLIC,
         overwrites=voicechanneloverwrites,
         reason="Bereite Benutzerkanäle vor...")
     await category.create_voice_channel(
         name=CHANNEL_NAME_PRIVATE,
         overwrites=voicechanneloverwrites,
         reason="Bereite Benutzerkanäle vor...")
     raise SuccessMessage(
         "Die erforderlichen Kanäle wurden erfolgreich erstellt!")
Beispiel #19
0
 async def voicechannel_create(self, ctx):
     category = await getUserChannelCategory(ctx.guild)
     channel = await self.get_voice_channel(ctx.author, category)
     if channel:
         if ctx.author.voice:
             await ctx.author.edit(voice_channel=channel,
                                   reason="Benutzer hat den Kanal erstellt")
         raise ErrorMessage(message="Du hast bereits einen Sprachkanal!")
     overwrites = {
         ctx.guild.default_role: PERM_VOICE_PRIVATE,
         ctx.author: PERM_VOICE_OWNER
     }
     newchannel = await category.create_voice_channel(
         name=(ctx.author.name.lower() + "#" + ctx.author.discriminator),
         overwrites=overwrites,
         reason="Benutzer hat den Sprachkanal erstellt")
     if ctx.author.voice:
         await ctx.author.edit(
             voice_channel=newchannel,
             reason="Benutzer hat den Sprachkanal erstellt")
     raise SuccessMessage("Sprachkanal erstellt!")
 async def movehere(self, ctx, member: Member):
     if member.voice:
         if ctx.author.voice:
             if member.voice.channel.permissions_for(
                     ctx.author).move_members:
                 if member.voice.channel.permissions_for(
                         ctx.guild.get_member(
                             self.bot.user.id)).move_members:
                     await member.edit(
                         voice_channel=ctx.author.voice.channel,
                         reason="Von Moderator " + ctx.author.name + "#" +
                         ctx.author.discriminator + " angefordert.")
                     raise SuccessMessage(
                         "Hierhin bewegt",
                         fields=[("Betroffener", member.mention),
                                 ("Kanal", ctx.author.voice.channel.name)])
                 raise commands.BotMissingPermissions([])
             raise commands.MissingPermissions([])
         raise ErrorMessage(
             message="Du befindest sich nicht in einem Sprachkanal.")
     raise ErrorMessage(
         message="Der Benutzer befindet sich nicht in einem Sprachkanal.")
Beispiel #21
0
 async def stop(self, ctx):
     if ctx.voice_client:
         await ctx.voice_client.disconnect()
         raise SuccessMessage("Bye bye!")
     raise ErrorMessage("Der Bot war in gar keinem Sprachkanal!")
Beispiel #22
0
 async def voicechannel_delete(self, ctx):
     channel = await self.get_voice_channel(ctx.author)
     if channel:
         await channel.delete(reason="Vom Benutzer gelöscht")
         raise SuccessMessage("Sprachkanal gelöscht!")
     raise ErrorMessage(message="Du hattest gar keinen Sprachkanal!")