73 lines
2.1 KiB
Python
73 lines
2.1 KiB
Python
import logging
|
|
import random
|
|
|
|
import discord
|
|
|
|
from botbotbot.shuffle import Shuffler
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class NickBot:
|
|
def __init__(
|
|
self,
|
|
bot: discord.Bot,
|
|
shuffler: Shuffler,
|
|
guild_ids: list[int] = [],
|
|
) -> None:
|
|
self.bot = bot
|
|
self.shf = shuffler
|
|
self.guild_ids = guild_ids
|
|
|
|
def init_events(self) -> None:
|
|
self.bot.add_application_command(
|
|
discord.SlashCommand(
|
|
self.alea,
|
|
name="alea",
|
|
description="Modifier les pseudos",
|
|
guild_ids=self.guild_ids,
|
|
)
|
|
)
|
|
self.bot.add_application_command(
|
|
discord.SlashCommand(
|
|
self.chan,
|
|
name="chan",
|
|
description="Donner de nouveaux pseudos",
|
|
guild_ids=self.guild_ids,
|
|
)
|
|
)
|
|
|
|
async def alea(self, ctx: discord.ApplicationContext) -> None:
|
|
logger.info(f"ALEA <{ctx.author}>.")
|
|
await ctx.defer()
|
|
if await self.shf.try_shuffle(ctx.guild):
|
|
await ctx.respond("ALEA", ephemeral=True, delete_after=30)
|
|
logger.info("FIN ALEA")
|
|
else:
|
|
await ctx.respond("ERRE ALEA", ephemeral=True, delete_after=30)
|
|
logger.info("ERRE ALEA")
|
|
|
|
async def chan(
|
|
self, ctx: discord.ApplicationContext, file: discord.Attachment
|
|
) -> None:
|
|
logger.info(f"CHAN <{ctx.author}>.")
|
|
await ctx.defer()
|
|
|
|
members = ctx.guild.members
|
|
members.remove(ctx.guild.owner)
|
|
|
|
nicks = (await file.read()).decode().splitlines()
|
|
if len(nicks) < len(members):
|
|
await ctx.respond("ERRE CHAN", ephemeral=True, delete_after=30)
|
|
return
|
|
|
|
nicks = random.choices(nicks, k=len(members))
|
|
for member, nick in zip(members, nicks):
|
|
logger.info(member, nick)
|
|
await member.edit(nick=nick)
|
|
|
|
embed = discord.Embed(
|
|
title="CHAN", description="\n".join(nicks), color=discord.Colour.green()
|
|
)
|
|
await ctx.respond(embed=embed, ephemeral=True, delete_after=30)
|
|
logger.info("FIN CHAN")
|