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"]}')
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):
"""Setting a 'staff' flag gives the user access to the Admin API.
Beware of that.
@ -138,7 +154,8 @@ async def generate_bot_token(ctx, args):
)
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))
@ -198,6 +215,14 @@ def setup(subparser):
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", 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 argparse
import inspect
from sys import argv
from sys import argv, exit
from dataclasses import dataclass
from quart import Quart
@ -93,7 +93,7 @@ def main(config):
async def _ctx_wrapper(fake_app, args):
app = fake_app.make_app()
async with app.app_context():
await args.func(fake_app, args)
return await args.func(fake_app, args)
try:
if len(argv) < 2:
@ -107,8 +107,9 @@ def main(config):
init_app_managers(app, init_voice=False)
args = parser.parse_args()
loop.run_until_complete(_ctx_wrapper(app, args))
return loop.run_until_complete(_ctx_wrapper(app, args))
except Exception:
log.exception("error while running command")
return 1
finally:
loop.run_until_complete(app.db.close())