MCPcopy Index your code
hub / github.com/codebymitch/TitanBot / removeReactionRole

Function removeReactionRole

src/services/reactionRoleService.js:254–289  ·  view source on GitHub ↗
(client, guildId, messageId, emoji)

Source from the content-addressed store, hash-verified

252}
253
254export async function removeReactionRole(client, guildId, messageId, emoji) {
255 try {
256 validateGuildId(guildId);
257 validateMessageId(messageId);
258
259 const key = `reaction_roles:${guildId}:${messageId}`;
260 const data = await getReactionRoleMessage(client, guildId, messageId);
261
262 if (!data || !data.roles[emoji]) {
263 return false;
264 }
265
266 delete data.roles[emoji];
267
268 if (Object.keys(data.roles).length === 0) {
269 await client.db.delete(key);
270 logger.info(`Removed last reaction role from message ${messageId}, deleted message data`);
271 } else {
272 await client.db.set(key, data);
273 logger.info(`Removed reaction role for emoji ${emoji} from message ${messageId}`);
274 }
275
276 return true;
277 } catch (error) {
278 if (error.name === 'TitanBotError') {
279 throw error;
280 }
281 logger.error(`Error removing reaction role in guild ${guildId}:`, error);
282 throw createError(
283 `Database error removing reaction role`,
284 ErrorTypes.DATABASE,
285 'Failed to remove reaction role. Please try again.',
286 { guildId, messageId, originalError: error.message }
287 );
288 }
289}
290
291export async function getAllReactionRoleMessages(client, guildId) {
292 try {

Callers

nothing calls this directly

Calls 6

createErrorFunction · 0.90
validateGuildIdFunction · 0.85
validateMessageIdFunction · 0.85
getReactionRoleMessageFunction · 0.85
deleteMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected