Hier ist der Python-Code für den Discord-Bot:
import discord
from discord.ext import commands, tasks
from discord import app_commands
import random
import asyncio
import datetime
# Setup für den Bot
intents = discord.Intents.default()
intents.members = True # Ermöglicht das Zugreifen auf Mitgliederinformationen
intents.message_content = True # Für Nachrichteninhalte
bot = commands.Bot(command_prefix='!', intents=intents)
# Kommando für Bot Ready
@bot.event
async def on_ready():
print(f'Bot ist eingeloggt als {bot.user}')
# Ticket-System
tickets = {}
@bot.command()
async def ticket(ctx, *, reason=None):
guild = ctx.guild
overwrites = {
guild.default_role: discord.PermissionOverwrite(read_messages=False),
ctx.author: discord.PermissionOverwrite(read_messages=True),
guild.me: discord.PermissionOverwrite(read_messages=True),
}
category = discord.utils.get(guild.categories, name="Tickets")
if not category:
category = await guild.create_category("Tickets")
channel = await category.create_text_channel(f"ticket-{ctx.author.name}", overwrites=overwrites)
tickets[ctx.author.id] = channel.id
await ctx.send(f"{ctx.author.mention}, dein Ticket wurde erstellt: {channel.mention}")
if reason:
await channel.send(f"Grund für das Ticket: {reason}")
@bot.command()
async def close_ticket(ctx):
if ctx.channel.category and ctx.channel.category.name == "Tickets":
await ctx.channel.delete()
await ctx.send("Ticket wurde geschlossen.")
else:
await ctx.send("Dies ist kein Ticket-Channel.")
# Warnsystem
warns = {}
@bot.command()
async def warn(ctx, member: discord.Member, *, reason=None):
if member.id not in warns:
warns[member.id] = []
warns[member.id].append(reason or "Kein Grund angegeben")
await ctx.send(f"{member.mention} wurde gewarnt. Grund: {reason or 'Kein Grund angegeben'}")
@bot.command()
async def warnings(ctx, member: discord.Member):
if member.id in warns and warns[member.id]:
await ctx.send(f"{member.mention} hat {len(warns[member.id])} Warnungen: {', '.join(warns[member.id])}")
else:
await ctx.send(f"{member.mention} hat keine Warnungen.")
# Up-/Downranks
@bot.command()
async def uprank(ctx, member: discord.Member, role: discord.Role):
await member.add_roles(role)
await ctx.send(f"{member.mention} wurde auf {role.name} hochgestuft.")
@bot.command()
async def downrank(ctx, member: discord.Member, role: discord.Role):
await member.remove_roles(role)
await ctx.send(f"{member.mention} wurde von {role.name} heruntergestuft.")
# User Info
@bot.command()
async def userinfo(ctx, member: discord.Member = None):
member = member or ctx.author
embed = discord.Embed(title=f"Benutzerinfo: {member.name}", color=discord.Color.blue())
embed.add_field(name="ID", value=member.id)
embed.add_field(name="Name", value=member.display_name)
embed.add_field(name="Beitrittsdatum", value=member.joined_at.strftime("%d.%m.%Y %H:%M:%S"))
embed.set_thumbnail(url=member.avatar.url)
await ctx.send(embed=embed)
# Server Info
@bot.command()
async def serverinfo(ctx):
guild = ctx.guild
embed = discord.Embed(title=f"Serverinfo: {guild.name}", color=discord.Color.green())
embed.add_field(name="Mitglieder", value=guild.member_count)
embed.add_field(name="Erstellt am", value=guild.created_at.strftime("%d.%m.%Y %H:%M:%S"))
embed.add_field(name="Region", value=guild.region)
embed.set_thumbnail(url=guild.icon.url if guild.icon else "")
await ctx.send(embed=embed)
# Ankündigungen
@bot.command()
async def announce(ctx, channel: discord.TextChannel, *, message):
await channel.send(f"📢 **Ankündigung:** {message}")
# Token setzen und Bot starten
TOKEN = "MTMxNDk4NjEzNDQzODE1MDE1NA.GRfJnt._cWvVgq-lUz4AP6yVt3gDKH7vtqe1-n8rlk6k4"
bot.run(MTMxNDk4NjEzNDQzODE1MDE1NA.GRfJnt._cWvVgq-lUz4AP6yVt3gDKH7vtqe1-n8rlk6k4)
Ersetzen Sie MTMxNDk4NjEzNDQzODE1MDE1NA.GRfJnt._cWvVgq-lUz4AP6yVt3gDKH7vtqe1-n8rlk6k4
durch den tatsächlichen Token, den Sie von der Discord-Entwicklerseite erhalten haben. Speichern Sie diesen Token sicher und teilen Sie ihn mit niemandem.
Um den Bot zu starten, führen Sie das Python-Skript aus, indem Sie den folgenden Befehl im Terminal eingeben:
python dateiname.py