Source code for bTagScript.block.discord_blocks.requirement_blocks

from typing import Optional

from ...interface import verb_required_block
from ...interpreter import Context


[docs]class RequireBlock(verb_required_block(True, parameter=True)): """ The require block will attempt to convert the given parameter into a channel role or member, using name or ID. If the user running the tag is not in the targeted channel or doesn't have the targeted role, the tag will stop processing and it will send the response if one is given. Multiple role or channel requirements can be given, and should be split by a ",". **Usage:** ``{require(<role, channel, member>):[response]}`` **Aliases:** ``whitelist`` **Payload:** ``response`` **Parameter:** ``role, channel, member`` **Examples:** .. tagscript:: {require(Moderator)} {require(#general, #bot-cmds):This tag can only be run in #general and #bot-cmds.} {require(757425366209134764, 668713062186090506, 737961895356792882):You aren't allowed to use this tag.} """ ACCEPTED_NAMES = ("require", "whitelist")
[docs] def process(self, ctx: Context) -> Optional[str]: """ Process the requirements """ actions = ctx.response.actions.get("requires") if actions: return None ctx.response.actions["requires"] = { "items": [i.strip() for i in ctx.verb.parameter.split(",")], "response": ctx.verb.payload, } return ""
[docs]class BlacklistBlock(verb_required_block(True, parameter=True)): """ The blacklist block will attempt to convert the given parameter into a channel or role, using name or ID. If the user running the tag is in the targeted channel or has the targeted role, the tag will stop processing and it will send the response if one is given. Multiple role or channel requirements can be given, and should be split by a ",". **Usage:** ``{blacklist(<role,channel>):[response]}`` **Payload:** ``response`` **Parameter:** ``role, channel`` **Examples:** .. tagscript:: {blacklist(Muted)} {blacklist(#support):This tag is not allowed in #support.} {blacklist(Tag Blacklist, 668713062186090506):You are blacklisted from using tags.} """ ACCEPTED_NAMES = ("blacklist",)
[docs] def process(self, ctx: Context) -> Optional[str]: """ Process the blacklists """ actions = ctx.response.actions.get("blacklist") if actions: return None ctx.response.actions["blacklist"] = { "items": [i.strip() for i in ctx.verb.parameter.split(",")], "response": ctx.verb.payload, } return ""