From a6a12f60a97abd6d46ba94ff0dd588b9f3098016 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 3 Dec 2019 13:53:08 +0100 Subject: [PATCH] Add userinfo command --- poetry.lock | 13 ++++++- royalpack/commands/__init__.py | 2 ++ royalpack/commands/userinfo.py | 63 ++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 royalpack/commands/userinfo.py diff --git a/poetry.lock b/poetry.lock index 2bfe0733..2a842f82 100644 --- a/poetry.lock +++ b/poetry.lock @@ -421,7 +421,7 @@ sentry = ["sentry_sdk (~0.13.2)"] telegram = ["python_telegram_bot (^12.2.0)"] [package.source] -reference = "8ff0731aa5bd167a59f342472bfe2d7e74daf1ca" +reference = "d82b824a3447b6aef9e5d6997033852d53089127" type = "git" url = "https://github.com/Steffo99/royalnet/" @@ -891,13 +891,24 @@ websockets = [ {file = "websockets-8.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:3762791ab8b38948f0c4d281c8b2ddfa99b7e510e46bd8dfa942a5fff621068c"}, {file = "websockets-8.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:3db87421956f1b0779a7564915875ba774295cc86e81bc671631379371af1170"}, {file = "websockets-8.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4f9f7d28ce1d8f1295717c2c25b732c2bc0645db3215cf757551c392177d7cb8"}, + {file = "websockets-8.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:295359a2cc78736737dd88c343cd0747546b2174b5e1adc223824bcaf3e164cb"}, + {file = "websockets-8.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:1d3f1bf059d04a4e0eb4985a887d49195e15ebabc42364f4eb564b1d065793f5"}, {file = "websockets-8.1-cp36-cp36m-win32.whl", hash = "sha256:2db62a9142e88535038a6bcfea70ef9447696ea77891aebb730a333a51ed559a"}, {file = "websockets-8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:0e4fb4de42701340bd2353bb2eee45314651caa6ccee80dbd5f5d5978888fed5"}, {file = "websockets-8.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:9b248ba3dd8a03b1a10b19efe7d4f7fa41d158fdaa95e2cf65af5a7b95a4f989"}, {file = "websockets-8.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ce85b06a10fc65e6143518b96d3dca27b081a740bae261c2fb20375801a9d56d"}, {file = "websockets-8.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:965889d9f0e2a75edd81a07592d0ced54daa5b0785f57dc429c378edbcffe779"}, + {file = "websockets-8.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:751a556205d8245ff94aeef23546a1113b1dd4f6e4d102ded66c39b99c2ce6c8"}, + {file = "websockets-8.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:3ef56fcc7b1ff90de46ccd5a687bbd13a3180132268c4254fc0fa44ecf4fc422"}, {file = "websockets-8.1-cp37-cp37m-win32.whl", hash = "sha256:7ff46d441db78241f4c6c27b3868c9ae71473fe03341340d2dfdbe8d79310acc"}, {file = "websockets-8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:20891f0dddade307ffddf593c733a3fdb6b83e6f9eef85908113e628fa5a8308"}, + {file = "websockets-8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c1ec8db4fac31850286b7cd3b9c0e1b944204668b8eb721674916d4e28744092"}, + {file = "websockets-8.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:5c01fd846263a75bc8a2b9542606927cfad57e7282965d96b93c387622487485"}, + {file = "websockets-8.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:9bef37ee224e104a413f0780e29adb3e514a5b698aabe0d969a6ba426b8435d1"}, + {file = "websockets-8.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d705f8aeecdf3262379644e4b55107a3b55860eb812b673b28d0fbc347a60c55"}, + {file = "websockets-8.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:c8a116feafdb1f84607cb3b14aa1418424ae71fee131642fc568d21423b51824"}, + {file = "websockets-8.1-cp38-cp38-win32.whl", hash = "sha256:e898a0863421650f0bebac8ba40840fc02258ef4714cb7e1fd76b6a6354bda36"}, + {file = "websockets-8.1-cp38-cp38-win_amd64.whl", hash = "sha256:f8a7bff6e8664afc4e6c28b983845c5bc14965030e3fb98789734d416af77c4b"}, {file = "websockets-8.1.tar.gz", hash = "sha256:5c65d2da8c6bce0fca2528f69f44b2f977e06954c8512a952222cea50dad430f"}, ] yarl = [ diff --git a/royalpack/commands/__init__.py b/royalpack/commands/__init__.py index cfec8e83..a469c2a5 100644 --- a/royalpack/commands/__init__.py +++ b/royalpack/commands/__init__.py @@ -26,6 +26,7 @@ from .diarioquote import DiarioquoteCommand from .peertube import PeertubeCommand from .googlevideo import GooglevideoCommand from .yahoovideo import YahoovideoCommand +from .userinfo import UserinfoCommand # Enter the commands of your Pack here! available_commands = [ @@ -56,6 +57,7 @@ available_commands = [ PeertubeCommand, GooglevideoCommand, YahoovideoCommand, + UserinfoCommand, ] # Don't change this, it should automatically generate __all__ diff --git a/royalpack/commands/userinfo.py b/royalpack/commands/userinfo.py new file mode 100644 index 00000000..685542e3 --- /dev/null +++ b/royalpack/commands/userinfo.py @@ -0,0 +1,63 @@ +from typing import * +from royalnet.commands import * +from royalnet.utils import * +from royalnet.backpack.tables import User +from sqlalchemy import func + + +class UserinfoCommand(Command): + name: str = "userinfo" + + aliases = ["uinfo", "ui", "useri"] + + description: str = "Visualizza informazioni su un utente." + + syntax = "[username]" + + async def run(self, args: CommandArgs, data: CommandData) -> None: + username = args.optional(0) + if username is None: + user: User = await data.get_author(error_if_none=True) + else: + found: Optional[User] = await asyncify( + data.session + .query(self.alchemy.get(User)) + .filter(func.lower(self.alchemy.get(User).username) == func.lower(username)) + .one_or_none + ) + if not found: + raise InvalidInputError("Utente non trovato.") + else: + user = found + + r = [ + f"ℹ️ [b]{user.username}[/b] (ID: {user.uid})", + f"{user.role}", + "", + ] + + # Bios are a bit too long + # if user.bio: + # r.append(f"{user.bio}") + + for account in user.telegram: + r.append(f"{account}") + + for account in user.discord: + r.append(f"{account}") + + for account in user.leagueoflegends: + r.append(f"{account}") + + r.append("") + + r.append(f"Ha creato [b]{len(user.diario_created)}[/b] righe di diario, e vi compare in" + f" [b]{len(user.diario_quoted)}[/b] righe.") + + r.append("") + + if user.trivia_score: + r.append(f"Trivia: [b]{user.trivia_score.correct_answers}[/b] risposte corrette / " + f"{user.trivia_score.total_answers}) totali") + + await data.reply("\n".join(r))