Création Repo pour mon bot Le Tamiseur

This commit is contained in:
Zachary Guénot
2023-04-23 19:30:04 +02:00
commit a879b38c3e
50 changed files with 7159 additions and 0 deletions

16
events/guildMemberAdd.js Executable file
View File

@@ -0,0 +1,16 @@
const { Events } = require('discord.js')
module.exports = {
name: Events.GuildMemberAdd,
async execute(member) {
member.guild.members.fetch().then(() => {
var i = 0
member.guild.members.cache.forEach(async member => { if (!member.user.bot) i++ })
let channel = member.guild.channels.cache.get('1091140609139560508')
console.log(channel.name)
console.log(`${i} Gens Posés`)
channel.setName('Changement...')
channel.setName(`${i} Gens Posés`)
}).catch(console.error)
}
}

16
events/guildMemberRemove.js Executable file
View File

@@ -0,0 +1,16 @@
const { Events } = require('discord.js')
module.exports = {
name: Events.GuildMemberRemove,
async execute(member) {
member.guild.members.fetch().then(() => {
var i = 0
member.guild.members.cache.forEach(async member => { if (!member.user.bot) i++ })
let channel = member.guild.channels.cache.get('1091140609139560508')
console.log(channel.name)
console.log(`${i} Gens Posés`)
channel.setName('Changement...')
channel.setName(`${i} Gens Posés`)
}).catch(console.error)
}
}

34
events/interactionCreate.js Executable file
View File

@@ -0,0 +1,34 @@
const { Events } = require('discord.js')
module.exports = {
name: Events.InteractionCreate,
async execute(interaction) {
if (interaction.isButton()) {
let button = interaction.client.buttons.get(interaction.customId)
if (!button) return console.error(`No button id matching ${interaction.customId} was found.`)
console.log(`\u001b[1;33m Button '${interaction.customId}' clicked by ${interaction.user.tag}`)
try { await button.execute(interaction) }
catch (error) { console.error(`Error executing ${interaction.customId}:`, error) }
}
if (!interaction.isAutocomplete() && !interaction.isChatInputCommand()) return //console.error(`Interaction ${interaction.commandName} is not a command.`)
let command = interaction.client.commands.get(interaction.commandName)
if (!command) return console.error(`No command matching ${interaction.commandName} was found.`)
if (interaction.isAutocomplete()) {
console.log(`\u001b[1;33m AutoCompleteRun '${interaction.commandName}' launched by ${interaction.user.tag}`)
try { await command.autocompleteRun(interaction) }
catch (error) { console.error(`Error autocompleting ${interaction.commandName}:`, error) }
}
else if (interaction.isChatInputCommand()) {
console.log(`\u001b[1;33m Command '${interaction.commandName}' launched by ${interaction.user.tag}`)
try { await command.execute(interaction) }
catch (error) { console.error(`Error executing ${interaction.commandName}:`, error) }
}
}
}

99
events/ready.js Executable file
View File

@@ -0,0 +1,99 @@
const { Events, EmbedBuilder, ButtonBuilder, ActionRowBuilder } = require('discord.js')
const { useQueue } = require("discord-player")
const dance = async function (bot_id, channel, embed, components) {
let messages = await channel.messages.fetch()
let botMessage = messages.find(msg => msg.author.id === bot_id)
if (!botMessage || (!components && botMessage.components.length > 0)) {
await channel.bulkDelete(messages)
return await channel.send({ embeds: [embed] })
} else {
await botMessage.edit({ embeds: [embed], components })
}
}
const getUptime = function (uptime) {
let days = Math.floor(uptime / 86400000)
let hours = Math.floor(uptime / 3600000) % 24
let minutes = Math.floor(uptime / 60000) % 60
let seconds = Math.floor(uptime / 1000) % 60
return `${days}J, ${hours}H, ${minutes}M et ${seconds}S`
}
module.exports = {
name: Events.ClientReady,
once: true,
execute(client) {
console.log(`\u001b[1;35m Ready! Logged in as ${client.user.tag}`)
setInterval(async () => {
let guild = client.guilds.cache.get('1086577543651524699')
let channel = guild.channels.cache.get('1099542278764245096')
let queue = useQueue(guild.id)
if (!queue) return await dance(client.user.id, channel, new EmbedBuilder().setColor('#ffc370').setTitle('Aucune session d\'écoute en cours !').setFooter({ text: `Uptime: ${getUptime(client.uptime)}` }))
let track = queue.currentTrack
if (!track) return await dance(client.user.id, channel, new EmbedBuilder().setColor('#ffc370').setTitle('Aucune musique en cours de lecture !').setFooter({ text: `Uptime: ${getUptime(client.uptime)}` }))
let embed = new EmbedBuilder()
.setColor('#ffc370')
.setTitle(track.title)
.setAuthor({ name: track.author })
.setURL(track.url)
.setImage(track.thumbnail)
.addFields(
{ name: 'Durée', value: track.duration, inline: true },
{ name: 'Source', value: track.source === 'youtube' ? 'Youtube' : track.source === 'spotify' ? 'Spotify' : 'Inconnu', inline: true },
{ name: 'Volume', value: `${queue.node.volume}%`, inline: true },
{ name: queue.node.isPaused() ? 'Progression (en pause)' : 'Progression', value: queue.node.createProgressBar() },
{ name: 'Loop', value: queue.repeatMode ? queue.repeatMode === 2 ? "File d'Attente" : "Titre" : "Off", inline: true },
{ name: 'Autoplay', value: queue.autoplay ? "On" : "Off", inline: true }
)
.setDescription(`**Musique suivante :** ${queue.tracks[0] ? queue.tracks[0].title : 'Aucune'}`)
.setFooter({ text: `Uptime: ${getUptime(client.uptime)} / Demandé par ${track.requestedBy.tag}` })
let components = [
new ActionRowBuilder().addComponents(
new ButtonBuilder()
.setLabel(queue.node.isPaused() ? '▶️' : '⏸️')
.setStyle(2)
.setCustomId(queue.node.isPaused() ? 'resume' : 'pause'),
new ButtonBuilder()
.setLabel('⏹️')
.setStyle(2)
.setCustomId('stop'),
new ButtonBuilder()
.setLabel('⏭️')
.setStyle(2)
.setCustomId('skip')
.setDisabled(queue.tracks.length !== 0),
new ButtonBuilder()
.setLabel('🔉')
.setStyle(2)
.setCustomId('volume_down')
.setDisabled(queue.node.volume === 0),
new ButtonBuilder()
.setLabel('🔊')
.setStyle(2)
.setCustomId('volume_up')
.setDisabled(queue.node.volume === 100)
),
new ActionRowBuilder().addComponents(
new ButtonBuilder()
.setLabel('🔀')
.setStyle(2)
.setCustomId('shuffle'),
new ButtonBuilder()
.setLabel('🔁')
.setStyle(2)
.setCustomId('loop'),
new ButtonBuilder()
.setLabel('⏮️')
.setStyle(2)
.setCustomId('previous')
.setDisabled(queue.previousTracks ? !queue.previousTracks[0] : true)
)
]
await dance(client.user.id, channel, embed, components)
}, 4000)
}
}

59
events/voiceStateUpdate.js Executable file
View File

@@ -0,0 +1,59 @@
const { Events, AuditLogEvent } = require('discord.js')
module.exports = {
name: Events.VoiceStateUpdate,
async execute(oldState, newState) {
/*
let oldMute = oldState.serverMute
let newMute = newState.serverMute
let oldDeaf = oldState.serverDeaf
let newDeaf = newState.serverDeaf
let oldChannel = oldState.channelId
let newChannel = newState.channelId
console.log(oldChannel)
console.log(newChannel)
let guild = newState.guild
let member = newState.member
let channel = guild.channels.cache.get('1076215868863819848')
let angels = guild.members.cache.get('223831938346123275')
if (oldChannel !== newChannel) {
let executor = await logMoveOrKick('channel_id')
//if (!executor) channel.send(`Impossible de savoir qui a déplacé <@${member.id}> !`)
//else if (member.id === executor.id) channel.send(`<@${member.id}> s'est déplacé lui-même le con...`)
//else {
// channel.send(`<@${member.id}> a été mis en sourdine par <@${executor.id}> !`)
//}
} else if (!oldMute && newMute) {
let executor = await logMuteOrDeaf('mute')
if (!executor) channel.send(`Impossible de savoir qui a muté <@${member.id}> !`)
else if (member.id === executor.id) channel.send(`<@${member.id}> s'est muté lui-même le con...`)
else {
channel.send(`<@${member.id}> a été muté par <@${executor.id}> !`)
}
} else if (!oldDeaf && newDeaf) {
let executor = await logMuteOrDeaf('deaf')
if (!executor) channel.send(`Impossible de savoir qui a mis en sourdine <@${member.id}> !`)
else if (member.id === executor.id) channel.send(`<@${member.id}> s'est mis en sourdine lui-même le con...`)
else {
channel.send(`<@${member.id}> a été mis en sourdine par <@${executor.id}> !`)
}
}
async function logMoveOrKick() {
let auditLogs = await guild.fetchAuditLogs({ limit: 1, type: AuditLogEvent.MemberMove })
console.log(auditLogs.entries.find(entry => { return entry }))
let log = await auditLogs.entries.find(entry => { return entry.extra.channel.id === newChannel })
console.log(log)
if (!log) return undefined
let executor = await guild.members.cache.get(log.executor.id)
return executor
}
async function logMuteOrDeaf(type) {
let auditLogs = await guild.fetchAuditLogs({ limit: 1, type: AuditLogEvent.MemberUpdate })
let log = await auditLogs.entries.find(entry => { return entry.target.id === member.id && entry.changes[0].key === type && entry.changes[0].new === true })
if (!log) return undefined
let executor = await guild.members.cache.get(log.executor.id)
return executor
}
*/
}
}