chrisrude / oobabot

A Discord bot which talks to Large Language Model AIs running on oobabooga's text-generation-webui
MIT License
101 stars 34 forks source link

Feature Suggestion: Whitelist/Blacklist for Servers, Channels, UIDs, Roles #39

Open jmoney7823956789378 opened 1 year ago

jmoney7823956789378 commented 1 year ago

This is another idea that pops up in my head sometimes, and I forget it before I post. If the server/channel/user/role whitelist is (enabled), then input require a comma-separated list of respective IDs. The bot will only watch for messages from and respond to those servers/channels/users/roles. Blacklist is of course the opposite. List servers/channels/users/roles that should be ignored all all times. Both lists non-exclusive, so I may whitelist an entire server, but blacklist one role, channel, or user, specifically.

TruthSearchers commented 1 year ago

I just thought of it , it would be good feature

wiredzax commented 1 year ago

this would be super useful. +1

chrisrude commented 1 year ago

Still keeping this in the backlog, but tbh it may be a little while until I can get to it. I still think it's a good idea. Would welcome PRs though if anyone is interested!

wiredzax commented 1 year ago

I was working on something. nothing PR worthy yet, but i have a list of userIDs made a setting for it so that it can be set to a file like a persona. the only issue i ran into was figuring out where to have the bot run the check against the file. would decided_to_respond be the best for that? what's your thoughts on it? after all, decide to respond already pulls from the settings.

wiredzax commented 1 year ago
        ###########################################################
        self.blockids_settings = oesp.ConfigSettingGroup("blockids")
        self.setting_groups.append(self.blockids_settings)

        self.blockids_settings.add_setting(
            oesp.ConfigSetting[str](
                name="blockids",
                default=os.environ.get(self.OOBABOT_BLOCKIDS_ENV_VAR, ""),
                description_lines=[
                    textwrap.dedent(
                        f"""
                    path to a file containing a list of blockids to use,
                    If not set, the bot will use the default blockids of none."""
                    )
                ], 
                show_default_in_yaml=False,
            )
        )

haven't tested it yet, but i'm going to pass it in decide to respond like you do in persona with self.blockids :str = discord_settings["blockids"]