teamify #185

Merged
OpzekerIT merged 1 commit from dev into main 2025-02-12 15:52:25 +00:00

125
discord/teammakerv2.py Normal file
View file

@ -0,0 +1,125 @@
import discord
import random
import asyncio
import re
from discord.ext import commands
def get_token():
with open("config.php", "r") as file:
content = file.read()
match = re.search(r"bottoken\s*=\s*'(.+?)'", content)
if match:
return match.group(1)
return None
token = get_token()
if not token:
raise ValueError("Bot token niet gevonden in config.php")
# Intents instellen
intents = discord.Intents.default()
intents.voice_states = True
intents.guilds = True
intents.messages = True
intents.message_content = True
intents.presences = True # Nodig als de bot presences moet zien
intents.members = True # Nodig om leden in een voice channel te zien
bot = commands.Bot(command_prefix="!", intents=intents)
@bot.event
async def on_ready():
print(f'Bot is ingelogd als {bot.user}')
@bot.command()
async def teamify(ctx, *args):
for arg in args:
if arg.lower() == "help":
help_message = (
"**Gebruik van !teamify:**\n"
"`!teamify` - Verdeel spelers in teams van max. 4 personen.\n"
"`!teamify <aantal_teams>` - Verdeel spelers in een opgegeven aantal teams.\n"
"`!teamify <aantal_teams> move` - Verdeel spelers en verplaats ze naar tijdelijke voice-kanalen.\n"
"`!teamify move` - Verdeel spelers automatisch en verplaats ze naar tijdelijke voice-kanalen."
)
await ctx.send(help_message)
return
# Beperk het commando tot alleen het kanaal "teamify"
if ctx.channel.name != "teamify":
await ctx.send("Dit commando kan alleen worden gebruikt in het #teamify kanaal.")
return
guild = ctx.guild
voice_channel = discord.utils.get(guild.voice_channels, name="Pubg_Random")
if not voice_channel or len(voice_channel.members) == 0:
await ctx.send("Er zijn geen mensen in het kanaal 'Pubg_Random' om teams van te maken!")
return
members = voice_channel.members
random.shuffle(members)
# Standaardwaarden
num_teams = 0
move_players = False
# Verwerk argumenten
for arg in args:
if arg.isdigit(): # Als het een getal is, gebruik het als het aantal teams
num_teams = int(arg)
elif arg.lower() == "move": # Als 'true' is opgegeven, verplaats spelers
move_players = True
# Bepaal het aantal teams als niet opgegeven
if num_teams <= 0:
num_teams = len(members) // 4 if len(members) >= 4 else 1
num_teams = min(num_teams, len(members))
teams = [[] for _ in range(num_teams)]
for i, member in enumerate(members):
teams[i % num_teams].append(member)
# Zoek het tekstkanaal "teamify"
text_channel = discord.utils.get(guild.text_channels, name="teamify")
if not text_channel:
await ctx.send("Het kanaal 'teamify' bestaat niet!")
return
message = f"Willekeurige teams uit {voice_channel.name}:\n\n"
category = discord.utils.get(guild.categories, name="Temporary Teams")
if not category:
category = await guild.create_category("Temporary Teams")
temp_channels = []
for i, team in enumerate(teams, start=1):
team_names = ', '.join([member.mention for member in team])
message += f"**Team {i}:** {team_names}\n"
if move_players:
temp_channel = await guild.create_voice_channel(f"Squad {i}", category=category)
temp_channels.append(temp_channel)
for member in team:
await member.move_to(temp_channel)
await text_channel.send(message)
await ctx.send("Teams zijn gepost in #teamify!" + (" Spelers zijn verplaatst naar tijdelijke kanalen." if move_players else ""))
# Controleer continu of de kanalen leeg zijn en verwijder ze
if move_players:
while temp_channels:
await asyncio.sleep(60) # Controleer elke minuut
for channel in temp_channels[:]:
if len(channel.members) == 0:
if channel in guild.voice_channels: # Controleer of het kanaal nog bestaat
await channel.delete()
temp_channels.remove(channel)
await ctx.send(f"Kanaal {channel.name} is opgeruimd omdat het leeg was!")
@bot.command()
async def whoisbest(ctx):
await ctx.send("Lanta is the best")
bot.run(token)