discord/utils.js

const { getRedis } = require('../services/redis');

/**
 * @namespace Utils
 * @memberof Discord
 */

/**
 * BaseSubscriber
 * @class
 * @description Base class for event subscriber
 * @memberof Discord.Utils
 */
class BaseSubscriber {
    constructor(subscriber_type) {
        this._subscriber_type = subscriber_type;
        this.log_meta = { module: this._subscriber_type };
        this.logger = require('../logger').child(this.log_meta);
        this.redis = getRedis() || null;
        this.active = false;
        this.telegram_chat_ids = [];
        this._dump_retries = 0;
        this._restore_retries = 0;
    }

    set _guild(guild) {
        this.log_meta.discord_guild_id = guild?.id;
        this.log_meta.discord_guild = guild?.name;
        this.__guild = guild;
    }

    /**
     * @returns {import('discord.js').Guild || undefined}
     */
    get _guild() {
        return this.__guild;
    }

    get _dump_key() {
        return `${this._guild?.id}:${this._subscriber_type}`;
    }
}

exports.BaseSubscriber = BaseSubscriber;