Implement leveling and economy features with associated models and commands
- Added new models for leveling and economy functionalities in the Prisma schema, including LevelingConfig, MemberLevel, LevelReward, EconomyConfig, MemberEconomy, ShopItem, and InventoryItem. - Introduced commands for managing XP, economy transactions, and shop interactions, enhancing user engagement. - Updated job handling to include reminders and poll closing functionalities. - Enhanced localization support for new commands and features in both German and English. - Improved the bot's job processing capabilities with a dedicated reminder worker for scheduled tasks.
This commit is contained in:
@@ -274,6 +274,414 @@ export const commandLocales = {
|
||||
'verify.panel.options.channel': {
|
||||
de: 'Optionaler Kanal für das Panel',
|
||||
en: 'Optional channel for the panel'
|
||||
},
|
||||
'leveling.rank.description': {
|
||||
de: 'Rangkarte eines Mitglieds anzeigen',
|
||||
en: 'Show a member rank card'
|
||||
},
|
||||
'leveling.rank.options.user': {
|
||||
de: 'Mitglied (Standard: du)',
|
||||
en: 'Member (defaults to you)'
|
||||
},
|
||||
'leveling.leaderboard.description': {
|
||||
de: 'Top 10 Mitglieder nach XP',
|
||||
en: 'Top 10 members by XP'
|
||||
},
|
||||
'leveling.xp.description': {
|
||||
de: 'XP verwalten (Admin)',
|
||||
en: 'Manage XP (admin)'
|
||||
},
|
||||
'leveling.xp.give.description': {
|
||||
de: 'XP vergeben',
|
||||
en: 'Give XP'
|
||||
},
|
||||
'leveling.xp.remove.description': {
|
||||
de: 'XP entfernen',
|
||||
en: 'Remove XP'
|
||||
},
|
||||
'leveling.xp.reset.description': {
|
||||
de: 'XP zurücksetzen',
|
||||
en: 'Reset XP'
|
||||
},
|
||||
'leveling.xp.options.user': {
|
||||
de: 'Zielmitglied',
|
||||
en: 'Target member'
|
||||
},
|
||||
'leveling.xp.options.amount': {
|
||||
de: 'XP-Betrag',
|
||||
en: 'XP amount'
|
||||
},
|
||||
'economy.balance.description': {
|
||||
de: 'Kontostand anzeigen',
|
||||
en: 'Show balance'
|
||||
},
|
||||
'economy.daily.description': {
|
||||
de: 'Tägliche Belohnung abholen',
|
||||
en: 'Claim daily reward'
|
||||
},
|
||||
'economy.weekly.description': {
|
||||
de: 'Wöchentliche Belohnung abholen',
|
||||
en: 'Claim weekly reward'
|
||||
},
|
||||
'economy.work.description': {
|
||||
de: 'Arbeiten und Geld verdienen',
|
||||
en: 'Work to earn money'
|
||||
},
|
||||
'economy.pay.description': {
|
||||
de: 'Geld an einen Nutzer senden',
|
||||
en: 'Send money to a user'
|
||||
},
|
||||
'economy.gamble.description': {
|
||||
de: '50/50 um deinen Einsatz spielen',
|
||||
en: '50/50 gamble your bet'
|
||||
},
|
||||
'economy.slots.description': {
|
||||
de: 'Spielautomaten spielen',
|
||||
en: 'Play the slot machine'
|
||||
},
|
||||
'economy.blackjack.description': {
|
||||
de: 'Blackjack spielen',
|
||||
en: 'Play blackjack'
|
||||
},
|
||||
'economy.coinflip.description': {
|
||||
de: 'Kopf oder Zahl um Geld wetten',
|
||||
en: 'Bet on heads or tails'
|
||||
},
|
||||
'economy.shop.description': {
|
||||
de: 'Server-Shop',
|
||||
en: 'Server shop'
|
||||
},
|
||||
'economy.shop.view.description': {
|
||||
de: 'Shop-Artikel anzeigen',
|
||||
en: 'View shop items'
|
||||
},
|
||||
'economy.shop.buy.description': {
|
||||
de: 'Artikel kaufen',
|
||||
en: 'Buy an item'
|
||||
},
|
||||
'economy.shop.options.item_id': {
|
||||
de: 'Artikel-ID aus /shop view',
|
||||
en: 'Item ID from /shop view'
|
||||
},
|
||||
'economy.inventory.description': {
|
||||
de: 'Dein Inventar anzeigen',
|
||||
en: 'Show your inventory'
|
||||
},
|
||||
'economy.eco.description': {
|
||||
de: 'Economy-Verwaltung',
|
||||
en: 'Economy management'
|
||||
},
|
||||
'economy.eco.leaderboard.description': {
|
||||
de: 'Reichsten Nutzer anzeigen',
|
||||
en: 'Show richest users'
|
||||
},
|
||||
'economy.eco.give.description': {
|
||||
de: 'Geld vergeben (Admin)',
|
||||
en: 'Give money (admin)'
|
||||
},
|
||||
'economy.eco.remove.description': {
|
||||
de: 'Geld entfernen (Admin)',
|
||||
en: 'Remove money (admin)'
|
||||
},
|
||||
'economy.eco.reset.description': {
|
||||
de: 'Nutzer-Economy zurücksetzen (Admin)',
|
||||
en: 'Reset user economy (admin)'
|
||||
},
|
||||
'economy.common.options.amount': {
|
||||
de: 'Betrag',
|
||||
en: 'Amount'
|
||||
},
|
||||
'economy.common.options.user': {
|
||||
de: 'Nutzer',
|
||||
en: 'User'
|
||||
},
|
||||
'economy.common.options.userOptional': {
|
||||
de: 'Optionaler Nutzer (Standard: du)',
|
||||
en: 'Optional user (defaults to you)'
|
||||
},
|
||||
'economy.common.options.target': {
|
||||
de: 'Zielnutzer',
|
||||
en: 'Target user'
|
||||
},
|
||||
'economy.coinflip.options.choice': {
|
||||
de: 'Kopf oder Zahl',
|
||||
en: 'Heads or tails'
|
||||
},
|
||||
'economy.choice.heads': {
|
||||
de: 'Kopf',
|
||||
en: 'Heads'
|
||||
},
|
||||
'economy.choice.tails': {
|
||||
de: 'Zahl',
|
||||
en: 'Tails'
|
||||
},
|
||||
'utility.userinfo.description': {
|
||||
de: 'Nutzerinformationen anzeigen',
|
||||
en: 'Show user information'
|
||||
},
|
||||
'utility.serverinfo.description': {
|
||||
de: 'Serverinformationen anzeigen',
|
||||
en: 'Show server information'
|
||||
},
|
||||
'utility.roleinfo.description': {
|
||||
de: 'Rolleninformationen anzeigen',
|
||||
en: 'Show role information'
|
||||
},
|
||||
'utility.roleinfo.options.role': {
|
||||
de: 'Rolle',
|
||||
en: 'Role'
|
||||
},
|
||||
'utility.channelinfo.description': {
|
||||
de: 'Kanalinformationen anzeigen',
|
||||
en: 'Show channel information'
|
||||
},
|
||||
'utility.avatar.description': {
|
||||
de: 'Avatar anzeigen',
|
||||
en: 'Show avatar'
|
||||
},
|
||||
'utility.banner.description': {
|
||||
de: 'Banner anzeigen',
|
||||
en: 'Show banner'
|
||||
},
|
||||
'utility.common.options.userOptional': {
|
||||
de: 'Optionaler Nutzer (Standard: du)',
|
||||
en: 'Optional user (defaults to you)'
|
||||
},
|
||||
'utility.common.options.channelOptional': {
|
||||
de: 'Optionaler Kanal (Standard: aktueller Kanal)',
|
||||
en: 'Optional channel (defaults to current)'
|
||||
},
|
||||
'utility.common.options.attachment': {
|
||||
de: 'Bild-Anhang',
|
||||
en: 'Image attachment'
|
||||
},
|
||||
'utility.common.options.url': {
|
||||
de: 'Bild-URL',
|
||||
en: 'Image URL'
|
||||
},
|
||||
'utility.common.options.name': {
|
||||
de: 'Name',
|
||||
en: 'Name'
|
||||
},
|
||||
'utility.poll.description': {
|
||||
de: 'Umfragen erstellen',
|
||||
en: 'Create polls'
|
||||
},
|
||||
'utility.poll.create.description': {
|
||||
de: 'Neue Umfrage erstellen',
|
||||
en: 'Create a new poll'
|
||||
},
|
||||
'utility.poll.options.question': {
|
||||
de: 'Frage',
|
||||
en: 'Question'
|
||||
},
|
||||
'utility.poll.options.options': {
|
||||
de: 'Optionen (kommagetrennt, 2–5)',
|
||||
en: 'Options (comma-separated, 2–5)'
|
||||
},
|
||||
'utility.poll.options.multiselect': {
|
||||
de: 'Mehrfachauswahl erlauben',
|
||||
en: 'Allow multi-select'
|
||||
},
|
||||
'utility.poll.options.anonymous': {
|
||||
de: 'Anonyme Abstimmung',
|
||||
en: 'Anonymous voting'
|
||||
},
|
||||
'utility.poll.options.duration': {
|
||||
de: 'Optionale Dauer (z. B. 1h)',
|
||||
en: 'Optional duration (e.g. 1h)'
|
||||
},
|
||||
'utility.remindme.description': {
|
||||
de: 'Erinnerung setzen',
|
||||
en: 'Set a reminder'
|
||||
},
|
||||
'utility.remindme.options.when': {
|
||||
de: 'Wann (z. B. 30m oder ISO-Datum)',
|
||||
en: 'When (e.g. 30m or ISO datetime)'
|
||||
},
|
||||
'utility.remindme.options.content': {
|
||||
de: 'Erinnerungstext',
|
||||
en: 'Reminder content'
|
||||
},
|
||||
'utility.remindme.options.recurring_cron': {
|
||||
de: 'Optional: Cron für wiederkehrende Erinnerung',
|
||||
en: 'Optional cron for recurring reminder'
|
||||
},
|
||||
'utility.reminders.description': {
|
||||
de: 'Erinnerungen verwalten',
|
||||
en: 'Manage reminders'
|
||||
},
|
||||
'utility.reminders.list.description': {
|
||||
de: 'Erinnerungen auflisten',
|
||||
en: 'List reminders'
|
||||
},
|
||||
'utility.reminders.delete.description': {
|
||||
de: 'Erinnerung löschen',
|
||||
en: 'Delete a reminder'
|
||||
},
|
||||
'utility.reminders.options.id': {
|
||||
de: 'Erinnerungs-ID (Präfix reicht)',
|
||||
en: 'Reminder ID (prefix is enough)'
|
||||
},
|
||||
'utility.afk.description': {
|
||||
de: 'AFK-Status setzen',
|
||||
en: 'Set AFK status'
|
||||
},
|
||||
'utility.afk.set.description': {
|
||||
de: 'Als AFK markieren',
|
||||
en: 'Mark as AFK'
|
||||
},
|
||||
'utility.afk.options.reason': {
|
||||
de: 'Optionaler AFK-Grund',
|
||||
en: 'Optional AFK reason'
|
||||
},
|
||||
'utility.emoji.description': {
|
||||
de: 'Emojis verwalten',
|
||||
en: 'Manage emojis'
|
||||
},
|
||||
'utility.emoji.add.description': {
|
||||
de: 'Emoji hinzufügen',
|
||||
en: 'Add emoji'
|
||||
},
|
||||
'utility.emoji.remove.description': {
|
||||
de: 'Emoji entfernen',
|
||||
en: 'Remove emoji'
|
||||
},
|
||||
'utility.emoji.steal.description': {
|
||||
de: 'Emoji aus Nachricht übernehmen',
|
||||
en: 'Steal emoji from message'
|
||||
},
|
||||
'utility.emoji.options.emoji': {
|
||||
de: 'Emoji',
|
||||
en: 'Emoji'
|
||||
},
|
||||
'utility.emoji.options.message_id': {
|
||||
de: 'Nachrichten-ID',
|
||||
en: 'Message ID'
|
||||
},
|
||||
'utility.emoji.options.url': {
|
||||
de: 'Emoji-URL',
|
||||
en: 'Emoji URL'
|
||||
},
|
||||
'utility.sticker.description': {
|
||||
de: 'Sticker verwalten',
|
||||
en: 'Manage stickers'
|
||||
},
|
||||
'utility.sticker.add.description': {
|
||||
de: 'Sticker hinzufügen',
|
||||
en: 'Add sticker'
|
||||
},
|
||||
'utility.sticker.options.url': {
|
||||
de: 'Sticker-URL',
|
||||
en: 'Sticker URL'
|
||||
},
|
||||
'utility.timestamp.description': {
|
||||
de: 'Discord-Timestamp-Formate generieren',
|
||||
en: 'Generate Discord timestamp formats'
|
||||
},
|
||||
'utility.timestamp.options.datetime': {
|
||||
de: 'Datum/Uhrzeit (ISO oder relative Dauer)',
|
||||
en: 'Datetime (ISO or relative duration)'
|
||||
},
|
||||
'utility.snipe.description': {
|
||||
de: 'Zuletzt gelöschte Nachricht anzeigen',
|
||||
en: 'Show last deleted message'
|
||||
},
|
||||
'utility.editsnipe.description': {
|
||||
de: 'Zuletzt bearbeitete Nachricht anzeigen',
|
||||
en: 'Show last edited message'
|
||||
},
|
||||
'utility.embed.description': {
|
||||
de: 'Embeds erstellen',
|
||||
en: 'Create embeds'
|
||||
},
|
||||
'utility.embed.builder.description': {
|
||||
de: 'Embed per Modal bauen und senden',
|
||||
en: 'Build and send an embed via modal'
|
||||
},
|
||||
'fun.8ball.description': {
|
||||
de: 'Magische 8-Ball-Antwort auf deine Frage',
|
||||
en: 'Magic 8-ball answer to your question'
|
||||
},
|
||||
'fun.8ball.options.question': {
|
||||
de: 'Deine Frage',
|
||||
en: 'Your question'
|
||||
},
|
||||
'fun.dice.description': {
|
||||
de: 'Würfel werfen',
|
||||
en: 'Roll dice'
|
||||
},
|
||||
'fun.dice.options.sides': {
|
||||
de: 'Anzahl Seiten (Standard: 6)',
|
||||
en: 'Number of sides (default: 6)'
|
||||
},
|
||||
'fun.dice.options.count': {
|
||||
de: 'Anzahl Würfe (Standard: 1, max. 10)',
|
||||
en: 'Number of rolls (default: 1, max 10)'
|
||||
},
|
||||
'fun.flip.description': {
|
||||
de: 'Kostenloser Münzwurf (Kopf oder Zahl)',
|
||||
en: 'Free coin flip (heads or tails)'
|
||||
},
|
||||
'fun.rps.description': {
|
||||
de: 'Schere, Stein, Papier gegen den Bot',
|
||||
en: 'Rock, paper, scissors against the bot'
|
||||
},
|
||||
'fun.rps.options.choice': {
|
||||
de: 'Deine Wahl',
|
||||
en: 'Your choice'
|
||||
},
|
||||
'fun.rps.choice.rock': {
|
||||
de: 'Stein',
|
||||
en: 'Rock'
|
||||
},
|
||||
'fun.rps.choice.paper': {
|
||||
de: 'Papier',
|
||||
en: 'Paper'
|
||||
},
|
||||
'fun.rps.choice.scissors': {
|
||||
de: 'Schere',
|
||||
en: 'Scissors'
|
||||
},
|
||||
'fun.choose.description': {
|
||||
de: 'Zufällige Auswahl aus Optionen',
|
||||
en: 'Random choice from options'
|
||||
},
|
||||
'fun.choose.options.options': {
|
||||
de: 'Optionen (kommagetrennt)',
|
||||
en: 'Options (comma-separated)'
|
||||
},
|
||||
'fun.trivia.description': {
|
||||
de: 'Trivia-Frage mit Multiple Choice',
|
||||
en: 'Trivia question with multiple choice'
|
||||
},
|
||||
'fun.tictactoe.description': {
|
||||
de: 'Tic-Tac-Toe gegen einen anderen Nutzer',
|
||||
en: 'Play Tic-Tac-Toe against another user'
|
||||
},
|
||||
'fun.connect4.description': {
|
||||
de: 'Connect 4 gegen einen anderen Nutzer',
|
||||
en: 'Play Connect 4 against another user'
|
||||
},
|
||||
'fun.hangman.description': {
|
||||
de: 'Hangman mit Buchstaben-Buttons',
|
||||
en: 'Hangman with letter buttons'
|
||||
},
|
||||
'fun.meme.description': {
|
||||
de: 'Zufälliges Meme laden',
|
||||
en: 'Fetch a random meme'
|
||||
},
|
||||
'fun.cat.description': {
|
||||
de: 'Zufälliges Katzenbild laden',
|
||||
en: 'Fetch a random cat image'
|
||||
},
|
||||
'fun.dog.description': {
|
||||
de: 'Zufälliges Hundebild laden',
|
||||
en: 'Fetch a random dog image'
|
||||
},
|
||||
'fun.common.options.opponent': {
|
||||
de: 'Gegner',
|
||||
en: 'Opponent'
|
||||
}
|
||||
} as const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user