mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 03:08:55 -05:00
* More privatization, and some error helpers This makes a lot more things private. Continued from #2967, fixes #2984 Adds public methods for various things. Below is a brief summary of things available elsewhere, though this particular set of changes may warrant a detailed section in the release notes. - bot.db.locale -> redbot.core.i18n.get_locale - Note: This one already existed. - bot.db.help -> redbot.core.commands.help.HelpSettings - bot db whitelist/blaclist? -> bot.allowed_by_whitelist_blacklist - This has also been made a single cannonical function for this purpose including check usage - bot color? -> bot.get_embed_color/bot.get_embed_colour - bot.id.api_tokens? -> - bot.get_shared_api_tokens - bot.set_shared_api_tokens - bot.remove_shared_api_tokens -bot.db.prefix -> bot.get_valid_prefixes - (Note: This is a wrapper around bot.get_prefix) Other changes include - removing `bot.counter` as it was never used anywhere - Adding properties with helpful error messages for moved and renamed things - making bot.uptime a property with an error on set - adding a migration to the bot config for shared_api_tokens * Remove overly encompassing message redaction, eval is a risk, dont run in dev if you cant manage it * address Flame's feedback * rephrase example * changelog extras * You saw nothing
142 lines
4.5 KiB
Python
142 lines
4.5 KiB
Python
import argparse
|
|
import asyncio
|
|
import logging
|
|
|
|
|
|
def confirm(m=""):
|
|
return input(m).lower().strip() in ("y", "yes")
|
|
|
|
|
|
def interactive_config(red, token_set, prefix_set):
|
|
loop = asyncio.get_event_loop()
|
|
token = ""
|
|
|
|
print("Red - Discord Bot | Configuration process\n")
|
|
|
|
if not token_set:
|
|
print("Please enter a valid token:")
|
|
while not token:
|
|
token = input("> ")
|
|
if not len(token) >= 50:
|
|
print("That doesn't look like a valid token.")
|
|
token = ""
|
|
if token:
|
|
loop.run_until_complete(red._config.token.set(token))
|
|
|
|
if not prefix_set:
|
|
prefix = ""
|
|
print(
|
|
"\nPick a prefix. A prefix is what you type before a "
|
|
"command. Example:\n"
|
|
"!help\n^ The exclamation mark is the prefix in this case.\n"
|
|
"The prefix can be multiple characters. You will be able to change it "
|
|
"later and add more of them.\nChoose your prefix:\n"
|
|
)
|
|
while not prefix:
|
|
prefix = input("Prefix> ")
|
|
if len(prefix) > 10:
|
|
print("Your prefix seems overly long. Are you sure that it's correct? (y/n)")
|
|
if not confirm("> "):
|
|
prefix = ""
|
|
if prefix:
|
|
loop.run_until_complete(red._config.prefix.set([prefix]))
|
|
|
|
return token
|
|
|
|
|
|
def parse_cli_flags(args):
|
|
parser = argparse.ArgumentParser(
|
|
description="Red - Discord Bot", usage="redbot <instance_name> [arguments]"
|
|
)
|
|
parser.add_argument("--version", "-V", action="store_true", help="Show Red's current version")
|
|
parser.add_argument(
|
|
"--list-instances",
|
|
action="store_true",
|
|
help="List all instance names setup with 'redbot-setup'",
|
|
)
|
|
parser.add_argument(
|
|
"--owner",
|
|
type=int,
|
|
help="ID of the owner. Only who hosts "
|
|
"Red should be owner, this has "
|
|
"serious security implications if misused.",
|
|
)
|
|
parser.add_argument(
|
|
"--co-owner",
|
|
type=int,
|
|
default=[],
|
|
nargs="*",
|
|
help="ID of a co-owner. Only people who have access "
|
|
"to the system that is hosting Red should be "
|
|
"co-owners, as this gives them complete access "
|
|
"to the system's data. This has serious "
|
|
"security implications if misused. Can be "
|
|
"multiple.",
|
|
)
|
|
parser.add_argument("--prefix", "-p", action="append", help="Global prefix. Can be multiple")
|
|
parser.add_argument(
|
|
"--no-prompt",
|
|
action="store_true",
|
|
help="Disables console inputs. Features requiring "
|
|
"console interaction could be disabled as a "
|
|
"result",
|
|
)
|
|
parser.add_argument(
|
|
"--no-cogs", action="store_true", help="Starts Red with no cogs loaded, only core"
|
|
)
|
|
parser.add_argument(
|
|
"--load-cogs",
|
|
type=str,
|
|
nargs="*",
|
|
help="Force loading specified cogs from the installed packages. "
|
|
"Can be used with the --no-cogs flag to load these cogs exclusively.",
|
|
)
|
|
parser.add_argument(
|
|
"--dry-run",
|
|
action="store_true",
|
|
help="Makes Red quit with code 0 just before the "
|
|
"login. This is useful for testing the boot "
|
|
"process.",
|
|
)
|
|
parser.add_argument(
|
|
"--debug",
|
|
action="store_const",
|
|
dest="logging_level",
|
|
const=logging.DEBUG,
|
|
default=logging.INFO,
|
|
help="Sets the loggers level as debug",
|
|
)
|
|
parser.add_argument("--dev", action="store_true", help="Enables developer mode")
|
|
parser.add_argument(
|
|
"--mentionable",
|
|
action="store_true",
|
|
help="Allows mentioning the bot as an alternative to using the bot prefix",
|
|
)
|
|
parser.add_argument(
|
|
"--rpc",
|
|
action="store_true",
|
|
help="Enables the built-in RPC server. Please read the docs prior to enabling this!",
|
|
)
|
|
parser.add_argument("--token", type=str, help="Run Red with the given token.")
|
|
parser.add_argument(
|
|
"--no-instance",
|
|
action="store_true",
|
|
help=(
|
|
"Run Red without any existing instance. "
|
|
"The data will be saved under a temporary folder "
|
|
"and deleted on next system restart."
|
|
),
|
|
)
|
|
parser.add_argument(
|
|
"instance_name", nargs="?", help="Name of the bot instance created during `redbot-setup`."
|
|
)
|
|
|
|
args = parser.parse_args(args)
|
|
|
|
if args.prefix:
|
|
args.prefix = sorted(args.prefix, reverse=True)
|
|
else:
|
|
args.prefix = []
|
|
|
|
return args
|