Add 'addbot' manage.py command

This commit is contained in:
Bluenix 2022-01-26 21:22:46 +01:00
parent c85f0806c7
commit 6c0f682e54
No known key found for this signature in database
GPG Key ID: 1C1ED07E6FC8AA48
2 changed files with 30 additions and 4 deletions

View File

@ -94,6 +94,22 @@ async def adduser(ctx, args):
print(f'\tdiscrim: {user["discriminator"]}') print(f'\tdiscrim: {user["discriminator"]}')
async def addbot(ctx, args):
uid, _ = await create_user(args.username, args.email, args.password)
await ctx.db.execute(
"""
UPDATE users
SET bot=True
WHERE id = $1
""",
uid,
)
args.user_id = uid
return await generate_bot_token(ctx, args)
async def set_flag(ctx, args): async def set_flag(ctx, args):
"""Setting a 'staff' flag gives the user access to the Admin API. """Setting a 'staff' flag gives the user access to the Admin API.
Beware of that. Beware of that.
@ -138,7 +154,8 @@ async def generate_bot_token(ctx, args):
) )
if not password_hash: if not password_hash:
return print("cannot find a bot with specified id") print("cannot find a bot with specified id")
return 1
print(make_token(args.user_id, password_hash)) print(make_token(args.user_id, password_hash))
@ -198,6 +215,14 @@ def setup(subparser):
setup_test_parser.set_defaults(func=adduser) setup_test_parser.set_defaults(func=adduser)
addbot_parser = subparser.add_parser("addbot", help="create a bot")
addbot_parser.add_argument("username", help="username of the bot")
addbot_parser.add_argument("email", help="email of the bot")
addbot_parser.add_argument("password", help="password of the bot")
addbot_parser.set_defaults(func=addbot)
setflag_parser = subparser.add_parser( setflag_parser = subparser.add_parser(
"setflag", help="set a flag for a user", description=set_flag.__doc__ "setflag", help="set a flag for a user", description=set_flag.__doc__
) )

View File

@ -20,7 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
import asyncio import asyncio
import argparse import argparse
import inspect import inspect
from sys import argv from sys import argv, exit
from dataclasses import dataclass from dataclasses import dataclass
from quart import Quart from quart import Quart
@ -93,7 +93,7 @@ def main(config):
async def _ctx_wrapper(fake_app, args): async def _ctx_wrapper(fake_app, args):
app = fake_app.make_app() app = fake_app.make_app()
async with app.app_context(): async with app.app_context():
await args.func(fake_app, args) return await args.func(fake_app, args)
try: try:
if len(argv) < 2: if len(argv) < 2:
@ -107,8 +107,9 @@ def main(config):
init_app_managers(app, init_voice=False) init_app_managers(app, init_voice=False)
args = parser.parse_args() args = parser.parse_args()
loop.run_until_complete(_ctx_wrapper(app, args)) return loop.run_until_complete(_ctx_wrapper(app, args))
except Exception: except Exception:
log.exception("error while running command") log.exception("error while running command")
return 1
finally: finally:
loop.run_until_complete(app.db.close()) loop.run_until_complete(app.db.close())