(guild, member, levelData, config)
| 110 | } |
| 111 | |
| 112 | async function sendLevelUpAnnouncement(guild, member, levelData, config) { |
| 113 | try { |
| 114 | const levelUpChannel = config.levelUpChannel |
| 115 | ? guild.channels.cache.get(config.levelUpChannel) |
| 116 | : guild.systemChannel; |
| 117 | |
| 118 | if (!levelUpChannel || !levelUpChannel.isTextBased()) { |
| 119 | return; |
| 120 | } |
| 121 | |
| 122 | const permissions = levelUpChannel.permissionsFor(guild.members.me); |
| 123 | if (!permissions || !permissions.has(['SendMessages', 'EmbedLinks'])) { |
| 124 | logger.warn(`Missing permissions to send levelup message in ${levelUpChannel.id}`); |
| 125 | return; |
| 126 | } |
| 127 | |
| 128 | const message = config.levelUpMessage |
| 129 | .replace(/{user}/g, member.toString()) |
| 130 | .replace(/{level}/g, levelData.level) |
| 131 | .replace(/{xp}/g, levelData.xp) |
| 132 | .replace(/{xpNeeded}/g, getXpForLevel(levelData.level + 1)); |
| 133 | |
| 134 | await levelUpChannel.send(message).catch(error => { |
| 135 | logger.error(`Failed to send level up message in channel ${levelUpChannel.id}:`, error); |
| 136 | }); |
| 137 | } catch (error) { |
| 138 | logger.error('Error sending level up announcement:', error); |
| 139 | } |
| 140 | } |
no test coverage detected