mirror of
https://github.com/toast-ts/Daggerbot-TS.git
synced 2024-11-17 16:30:58 -05:00
700th commit, add new dev subcmd.
This commit is contained in:
parent
6b7156bbe3
commit
2bf6a71c98
@ -122,6 +122,22 @@ export default class Developer {
|
||||
const message = interaction.options.getString('message');
|
||||
const int = await interaction.reply({content: '*Sending...*', fetchReply: true});
|
||||
client.users.cache.get(member.id).send(`${message}\n╰ ${interaction.member.displayName}`).then(()=>int.edit(`Successfully sent a DM to **${member.user.username}** with the following message:\n\`\`\`${message}\`\`\``)).catch((e:Error)=>int.edit(`\`${e.message}\``))
|
||||
},
|
||||
modify_rank_msgs: async()=>{
|
||||
const member = interaction.options.getMember('member');
|
||||
const messages = interaction.options.getInteger('new-messages-count');
|
||||
const oldData = await client.userLevels.fetchUser(member.id);
|
||||
const newData = await client.userLevels.modifyUser(member.id, messages);
|
||||
await interaction.reply({embeds:[new client.embed()
|
||||
.setColor(client.config.embedColorGreen)
|
||||
.setDescription(MessageTool.concatMessage(
|
||||
`Successfully modified the messages count of **${member.displayName}**`,
|
||||
`╰ Old: **${oldData.dataValues.messages.toLocaleString('en-US')}**`,
|
||||
`╰ New: **${newData.messages.toLocaleString('en-US')}**`,
|
||||
`╰ Difference: **${(newData.messages - oldData.dataValues.messages).toLocaleString('en-US')}**`,
|
||||
'Although if you set the number too high or low, it will have a bigger impact on the leaderboard graph.'
|
||||
))
|
||||
]})
|
||||
}
|
||||
} as any)[interaction.options.getSubcommand()]();
|
||||
}
|
||||
@ -190,4 +206,17 @@ export default class Developer {
|
||||
.setName('message')
|
||||
.setDescription('Message to send')
|
||||
.setRequired(true)))
|
||||
.addSubcommand(x=>x
|
||||
.setName('modify_rank_msgs')
|
||||
.setDescription('Modify the messages count of a member')
|
||||
.addUserOption(x=>x
|
||||
.setName('member')
|
||||
.setDescription('Member to modify the messages count of')
|
||||
.setRequired(true))
|
||||
.addIntegerOption(x=>x
|
||||
.setName('new-messages-count')
|
||||
.setDescription('Replace the messages count of the member with this number')
|
||||
.setRequired(true)
|
||||
.setMinValue(5)
|
||||
.setMaxValue(1999999999)))
|
||||
}
|
||||
|
@ -5,18 +5,14 @@ import CanvasBuilder from '../components/CanvasGraph.js';
|
||||
export default class Rank {
|
||||
static async run(client: TClient, interaction: Discord.ChatInputCommandInteraction<'cached'>){
|
||||
if (interaction.guildId !== client.config.dcServer.id) return interaction.reply({content: 'This command doesn\'t work in this server.', ephemeral: true});
|
||||
// const allData = await client.userLevels._content.find();
|
||||
const allData = await client.userLevels.fetchEveryone();
|
||||
({
|
||||
view: async()=>{
|
||||
// fetch user or user interaction sender
|
||||
const member = interaction.options.getMember('member') ?? interaction.member as Discord.GuildMember;
|
||||
if (member.user.bot) return interaction.reply('Bots don\'t level up, try viewing the rank data from the users instead.');
|
||||
// information about users progress on level roles
|
||||
// const userData = await client.userLevels._content.findById(member.user.id);
|
||||
if (member.user.bot) return interaction.reply('Bots don\'t level up, try again with an actual member instead.');
|
||||
const userData = await client.userLevels.fetchUser(member.user.id);
|
||||
|
||||
const pronounBool = (you: string, they: string) => { // takes 2 words and chooses which to use based on if user did this command on themself
|
||||
const pronounBool = (you: string, they: string) => { // takes 2 words and chooses which to use based on if user did this command on themselves
|
||||
if (interaction.user.id === member.user.id) return you || true;
|
||||
else return they || false;
|
||||
};
|
||||
@ -26,13 +22,13 @@ export default class Rank {
|
||||
const memberDifference = userData.dataValues.messages - client.userLevels.algorithm(userData.dataValues.level);
|
||||
const levelDifference = client.userLevels.algorithm(userData.dataValues.level+1) - client.userLevels.algorithm(userData.dataValues.level);
|
||||
let ptText = 'Ping toggle ';
|
||||
interaction.reply({embeds: [new client.embed().setColor(member.displayColor).setTitle(`Level: **${userData.dataValues.level}**\nRank: **${index ? '#' + index : 'last'}**\nProgress: **${memberDifference}/${levelDifference} (${(memberDifference/levelDifference*100).toFixed(2)}%)**\nTotal: **${userData.dataValues.messages/* .toLocaleString('en-US') */}**`).setThumbnail(member.avatarURL({extension:'png',size:1024}) || member.user.avatarURL({extension:'png',size:1024}) || member.user.defaultAvatarURL).setFooter({text: userData.pingToggle === true ? ptText += 'enabled' : ptText += 'disabled'})]})
|
||||
interaction.reply({embeds: [new client.embed().setColor(member.displayColor).setTitle(`Level: **${userData.dataValues.level}**\nRank: **${index ? '#' + index : 'last'}**\nProgress: **${memberDifference}/${levelDifference} (${(memberDifference/levelDifference*100).toFixed(2)}%)**\nTotal: **${userData.dataValues.messages.toLocaleString('en-US')}**`).setThumbnail(member.avatarURL({extension:'png',size:1024}) || member.user.avatarURL({extension:'png',size:1024}) || member.user.defaultAvatarURL).setFooter({text: userData.pingToggle === true ? ptText += 'enabled' : ptText += 'disabled'})]})
|
||||
},
|
||||
leaderboard: async()=>{
|
||||
const data = (await client.dailyMsgs.fetchDays()).map(x=>[x.dataValues.day, x.dataValues.total]).sort((a,b)=>a[0]-b[0]).slice(-60).map((x: number[], i: number, a: any)=>{
|
||||
return x[1] - ((a[i - 1] || [])[1] || x[1])
|
||||
});
|
||||
if (data.length < 3) return interaction.reply('Not enough data to generate graph.');
|
||||
if (data.length < 2) return interaction.reply('Not enough data to generate graph.');
|
||||
|
||||
const graph = await new CanvasBuilder().generateGraph(data, 'leaderboard');
|
||||
interaction.reply({
|
||||
@ -44,18 +40,18 @@ export default class Rank {
|
||||
name: 'Top users sorted by messages sent:',
|
||||
value: allData.sort((a,b)=>b.messages - a.messages).slice(0,15).map((x,i)=>`${i+1}. <@${x.dataValues.id}>: ${x.messages.toLocaleString('en-US')}`).join('\n')
|
||||
}).setImage('attachment://dailyMessages.jpg').setFooter({text: 'Graph updates daily'})],
|
||||
files: [new client.attachment(graph.toBuffer(),{name: 'dailyMessages.jpg'})]
|
||||
files: [new client.attachment(graph.toBuffer(), {name: 'dailyMessages.jpg'})]
|
||||
})
|
||||
},
|
||||
notification: async()=>{
|
||||
const findUserInDatabase = await client.userLevels.fetchUser(interaction.user.id);
|
||||
const textDeco = ' be pinged for level-up notification in the future.'
|
||||
const textDeco = 'be pinged for level-up notifications.'
|
||||
if (!findUserInDatabase.pingToggle) {
|
||||
await findUserInDatabase.update({pingToggle: true}, {where: {id: interaction.user.id}})
|
||||
interaction.reply({content: 'You will'+textDeco, ephemeral: true})
|
||||
interaction.reply({content: 'You will '+textDeco, ephemeral: true})
|
||||
} else if (findUserInDatabase.pingToggle) {
|
||||
await findUserInDatabase.update({pingToggle: false}, {where: {id: interaction.user.id}})
|
||||
interaction.reply({content: 'You won\'t'+textDeco, ephemeral: true})
|
||||
interaction.reply({content: 'You won\'t '+textDeco, ephemeral: true})
|
||||
}
|
||||
}
|
||||
} as any)[interaction.options.getSubcommand()]();
|
||||
|
@ -31,10 +31,8 @@ export default class MessageCreate {
|
||||
}
|
||||
|
||||
if (message.guildId === client.config.dcServer.id && !automodded) client.userLevels.messageIncremental(message.author.id);
|
||||
// Mop gifs from banned channels without Monster having to mop them.
|
||||
const bannedChannels = [
|
||||
'742324777934520350', // #discord-moderators
|
||||
]
|
||||
// Mop gifs from banned channels without admins having to mop them.
|
||||
const bannedChannels = []
|
||||
if (['tenor.com/view', 'giphy.com/gifs', 'giphy.com/media'].some(e=>message.content.toLowerCase().includes(e)) && bannedChannels.includes(message.channelId)) message.reply('Gifs are not allowed in this channel.').then(()=>message.delete())
|
||||
|
||||
// Autoresponse:tm:
|
||||
|
Loading…
Reference in New Issue
Block a user