diff --git a/__init__.py b/__init__.py index f0e4609..3878d03 100644 --- a/__init__.py +++ b/__init__.py @@ -16,4 +16,3 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ - diff --git a/manage/cmd/users.py b/manage/cmd/users.py index 10aefd1..d1ac694 100644 --- a/manage/cmd/users.py +++ b/manage/cmd/users.py @@ -94,6 +94,23 @@ 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 +155,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 +216,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__ ) diff --git a/manage/main.py b/manage/main.py index f65d430..457673f 100644 --- a/manage/main.py +++ b/manage/main.py @@ -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())