diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..e1b05b08 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,5 @@ +# `docs` + +Leave the `index.html` and the `.nojekyll` files here, otherwise GitHub pages will break. + +To update the docs, **delete all folders inside this one** and run `make html` in the `docs_source` folder. diff --git a/docs/doctrees/bots.doctree b/docs/doctrees/bots.doctree index fe623181..ae27bc12 100644 Binary files a/docs/doctrees/bots.doctree and b/docs/doctrees/bots.doctree differ diff --git a/docs/doctrees/database.doctree b/docs/doctrees/database.doctree index 70aa2b85..ef9c8baf 100644 Binary files a/docs/doctrees/database.doctree and b/docs/doctrees/database.doctree differ diff --git a/docs/doctrees/environment.pickle b/docs/doctrees/environment.pickle index 2e926ad5..4f9398fc 100644 Binary files a/docs/doctrees/environment.pickle and b/docs/doctrees/environment.pickle differ diff --git a/docs/doctrees/index.doctree b/docs/doctrees/index.doctree index bba3aa2a..8304526d 100644 Binary files a/docs/doctrees/index.doctree and b/docs/doctrees/index.doctree differ diff --git a/docs/doctrees/network.doctree b/docs/doctrees/network.doctree index f6a5740c..7207ec87 100644 Binary files a/docs/doctrees/network.doctree and b/docs/doctrees/network.doctree differ diff --git a/docs/doctrees/utils.doctree b/docs/doctrees/utils.doctree index e0eafc91..126e3e34 100644 Binary files a/docs/doctrees/utils.doctree and b/docs/doctrees/utils.doctree differ diff --git a/docs/doctrees/web.doctree b/docs/doctrees/web.doctree index 72b77ea1..eba60532 100644 Binary files a/docs/doctrees/web.doctree and b/docs/doctrees/web.doctree differ diff --git a/docs/html/_sources/index.rst.txt b/docs/html/_sources/index.rst.txt index e8ada55e..5e7c7391 100644 --- a/docs/html/_sources/index.rst.txt +++ b/docs/html/_sources/index.rst.txt @@ -14,9 +14,8 @@ royalnet web -Indices and tables -================== +Some useful links +------------------------------------ -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` \ No newline at end of file +* `Royalnet on GitHub `_ +* :ref:`genindex` \ No newline at end of file diff --git a/docs/html/_sources/web.rst.txt b/docs/html/_sources/web.rst.txt index ea569545..cabaf108 100644 --- a/docs/html/_sources/web.rst.txt +++ b/docs/html/_sources/web.rst.txt @@ -10,3 +10,11 @@ royalnet.web :private-members: :undoc-members: + +Royalprints +------------------------------------ + +.. automodule:: royalnet.web.royalprints + :members: + :private-members: + :undoc-members: diff --git a/docs/html/audio.html b/docs/html/audio.html index 41ff5150..f334c84b 100644 --- a/docs/html/audio.html +++ b/docs/html/audio.html @@ -535,7 +535,7 @@ The name of the downloaded and PCM-converted audio file.

class royalnet.audio.RoyalPCMAudio(rpf: royalnet.audio.royalpcmfile.RoyalPCMFile)
-

A discord.AudioSource that keeps data in a file instead of in memory.

+

A discord.AudioSource that keeps data in a file instead of in memory.

__init__(rpf: royalnet.audio.royalpcmfile.RoyalPCMFile)
diff --git a/docs/html/bots.html b/docs/html/bots.html index da3deec7..79455cd1 100644 --- a/docs/html/bots.html +++ b/docs/html/bots.html @@ -218,7 +218,7 @@
_bot_factory() → Type[discord.client.Client]
-

Create a custom DiscordClient class inheriting from discord.Client.

+

Create a custom DiscordClient class inheriting from discord.Client.

@@ -284,7 +284,7 @@
-class royalnet.bots.GenericBot(*, royalnet_config: Optional[royalnet.network.royalnetconfig.RoyalnetConfig] = None, database_config: Optional[royalnet.database.databaseconfig.DatabaseConfig] = None, command_prefix: str, commands: List[Type[royalnet.utils.command.Command]] = None, missing_command: Type[royalnet.utils.command.Command] = <class 'royalnet.commands.null.NullCommand'>, error_command: Type[royalnet.utils.command.Command] = <class 'royalnet.commands.null.NullCommand'>)
+class royalnet.bots.GenericBot(*, royalnet_config: Optional[royalnet.network.royalnetconfig.RoyalnetConfig] = None, database_config: Optional[royalnet.database.databaseconfig.DatabaseConfig] = None, command_prefix: str, commands: List[Type[royalnet.utils.command.Command]] = None, missing_command: Type[royalnet.utils.command.Command] = <class 'royalnet.commands.null.NullCommand'>, error_command: Type[royalnet.utils.command.Command] = <class 'royalnet.commands.null.NullCommand'>, loop: asyncio.events.AbstractEventLoop = None)

A generic bot class, to be used as base for the other more specific classes, such as royalnet.bots.TelegramBot and royalnet.bots.DiscordBot.

diff --git a/docs/html/database.html b/docs/html/database.html index 71d8e867..715f8bfa 100644 --- a/docs/html/database.html +++ b/docs/html/database.html @@ -262,7 +262,7 @@
-royal = <RelationshipProperty at 0x72f7a98; no key>
+royal = <RelationshipProperty at 0x7f4e4f8; no key>
@@ -292,7 +292,7 @@
-creator = <RelationshipProperty at 0x72f7c48; no key>
+creator = <RelationshipProperty at 0x7f4e108; no key>
@@ -317,7 +317,7 @@
-quoted_account = <RelationshipProperty at 0x72f7f60; no key>
+quoted_account = <RelationshipProperty at 0x7f4ea08; no key>
@@ -352,7 +352,7 @@
-royal = <RelationshipProperty at 0x72f74b0; no key>
+royal = <RelationshipProperty at 0x7f4e6a8; no key>
@@ -367,7 +367,7 @@ class royalnet.database.tables.ActiveKvGroup
-group = <RelationshipProperty at 0x72f7978; no key>
+group = <RelationshipProperty at 0x7f4e420; no key>
@@ -377,7 +377,7 @@
-royal = <RelationshipProperty at 0x72f7ae0; no key>
+royal = <RelationshipProperty at 0x7f4e2b8; no key>
@@ -392,7 +392,7 @@ class royalnet.database.tables.Keyvalue
-group = <RelationshipProperty at 0x72f7c90; no key>
+group = <RelationshipProperty at 0x7f4e930; no key>
@@ -447,7 +447,7 @@
-royal = <RelationshipProperty at 0x72f7930; no key>
+royal = <RelationshipProperty at 0x7f4ea50; no key>
@@ -475,6 +475,16 @@ content = Column(None, Text(), table=None)
+
+
+css = Column(None, String(), table=None)
+
+ +
+
+format = Column(None, String(), table=None, nullable=False, default=ColumnDefault('markdown'))
+
+
page_id = Column(None, UUID(as_uuid=True), table=None, primary_key=True, nullable=False)
@@ -497,7 +507,7 @@
-author = <RelationshipProperty at 0x730d228; no key>
+author = <RelationshipProperty at 0x7f4e3d8; no key>
@@ -512,7 +522,7 @@
-page = <RelationshipProperty at 0x730d588; no key>
+page = <RelationshipProperty at 0x7f46f60; no key>
diff --git a/docs/html/genindex.html b/docs/html/genindex.html index bc0932af..f392a129 100644 --- a/docs/html/genindex.html +++ b/docs/html/genindex.html @@ -331,10 +331,10 @@
  • connect() (royalnet.network.RoyalnetLink method)
  • - - + - - +
    • royalnet.audio (module)
    • royalnet.bots (module) @@ -752,6 +758,8 @@
    • royalnet.utils (module)
    • royalnet.web (module) +
    • +
    • royalnet.web.royalprints (module)
    • RoyalnetConfig (class in royalnet.network)
    • @@ -824,6 +832,8 @@ + + +
      • Telegram (class in royalnet.database.tables) +
      • +
      • telegram_escape() (in module royalnet.utils)
      • TelegramBot (class in royalnet.bots)
      • diff --git a/docs/html/index.html b/docs/html/index.html index 644a7def..c74c4423 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -178,19 +178,19 @@
      • royalnet.error
      • -
      • royalnet.web - -
        -

        Indices and tables

        +
        diff --git a/docs/html/network.html b/docs/html/network.html index 487e91d3..6d2b89aa 100644 --- a/docs/html/network.html +++ b/docs/html/network.html @@ -162,7 +162,7 @@

        Royalnet (websocket) related classes.

        +class royalnet.network.RoyalnetLink(master_uri: str, secret: str, link_type: str, request_handler, *, loop: asyncio.events.AbstractEventLoop = None)
        connect()
        @@ -296,7 +296,7 @@ Contains info about the source and the destination.

        -class royalnet.network.RoyalnetServer(address: str, port: int, required_secret: str, *, loop: asyncio.events.AbstractEventLoop = <_WindowsSelectorEventLoop running=False closed=False debug=False>)
        +class royalnet.network.RoyalnetServer(address: str, port: int, required_secret: str, *, loop: asyncio.events.AbstractEventLoop = None)
        find_client(*, nid: str = None, link_type: str = None) → List[royalnet.network.royalnetserver.ConnectedClient]
        diff --git a/docs/html/objects.inv b/docs/html/objects.inv index 294d7442..7a8aea03 100644 Binary files a/docs/html/objects.inv and b/docs/html/objects.inv differ diff --git a/docs/html/py-modindex.html b/docs/html/py-modindex.html index faa43b16..2812267f 100644 --- a/docs/html/py-modindex.html +++ b/docs/html/py-modindex.html @@ -212,6 +212,11 @@
          royalnet.web
          + royalnet.web.royalprints +
      diff --git a/docs/html/searchindex.js b/docs/html/searchindex.js index 2b90a92f..64015767 100644 --- a/docs/html/searchindex.js +++ b/docs/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["audio","bots","commands","database","error","index","network","utils","web"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["audio.rst","bots.rst","commands.rst","database.rst","error.rst","index.rst","network.rst","utils.rst","web.rst"],objects:{"royalnet.audio":{PlayMode:[0,1,1,""],Playlist:[0,1,1,""],Pool:[0,1,1,""],RoyalPCMAudio:[0,1,1,""],RoyalPCMFile:[0,1,1,""],YtdlFile:[0,1,1,""],YtdlInfo:[0,1,1,""]},"royalnet.audio.PlayMode":{"delete":[0,2,1,""],__init__:[0,2,1,""],_generate_generator:[0,2,1,""],add:[0,2,1,""],next:[0,2,1,""],queue_preview:[0,2,1,""],videos_left:[0,2,1,""]},"royalnet.audio.Playlist":{"delete":[0,2,1,""],__init__:[0,2,1,""],_generate_generator:[0,2,1,""],add:[0,2,1,""],queue_preview:[0,2,1,""],videos_left:[0,2,1,""]},"royalnet.audio.Pool":{"delete":[0,2,1,""],__init__:[0,2,1,""],_generate_generator:[0,2,1,""],add:[0,2,1,""],queue_preview:[0,2,1,""],videos_left:[0,2,1,""]},"royalnet.audio.RoyalPCMAudio":{"delete":[0,2,1,""],__init__:[0,2,1,""],create_from_url:[0,3,1,""],create_from_ytsearch:[0,3,1,""],is_opus:[0,2,1,""],read:[0,2,1,""]},"royalnet.audio.RoyalPCMFile":{audio_filename:[0,4,1,""],create_from_url:[0,3,1,""],create_from_ytsearch:[0,3,1,""],delete_audio_file:[0,2,1,""],ytdl_args:[0,4,1,""],ytdl_filename:[0,4,1,""]},"royalnet.audio.YtdlFile":{_stop_download:[0,2,1,""],create_from_url:[0,3,1,""],delete_video_file:[0,2,1,""],ytdl_args:[0,4,1,""]},"royalnet.audio.YtdlInfo":{__init__:[0,2,1,""],create_from_url:[0,3,1,""],download:[0,2,1,""],to_discord_embed:[0,2,1,""]},"royalnet.bots":{DiscordBot:[1,1,1,""],DiscordConfig:[1,1,1,""],GenericBot:[1,1,1,""],TelegramBot:[1,1,1,""],TelegramConfig:[1,1,1,""]},"royalnet.bots.DiscordBot":{_bot_factory:[1,2,1,""],_call_factory:[1,2,1,""],_init_client:[1,2,1,""],_init_voice:[1,2,1,""],add_to_music_data:[1,2,1,""],advance_music_data:[1,2,1,""],interface_name:[1,4,1,""],run:[1,2,1,""],update_activity_with_source_title:[1,2,1,""]},"royalnet.bots.GenericBot":{_call_factory:[1,2,1,""],_init_commands:[1,2,1,""],_init_database:[1,2,1,""],_init_royalnet:[1,2,1,""],_network_handler:[1,2,1,""],call:[1,2,1,""],interface_name:[1,4,1,""],run:[1,2,1,""]},"royalnet.bots.TelegramBot":{_call_factory:[1,2,1,""],_handle_update:[1,2,1,""],_init_client:[1,2,1,""],botfather_command_string:[1,4,1,""],interface_name:[1,4,1,""],run:[1,2,1,""]},"royalnet.commands":{AuthorCommand:[2,1,1,""],CiaoruoziCommand:[2,1,1,""],ColorCommand:[2,1,1,""],CvCommand:[2,1,1,""],DateparserCommand:[2,1,1,""],DiarioCommand:[2,1,1,""],KvCommand:[2,1,1,""],KvactiveCommand:[2,1,1,""],KvrollCommand:[2,1,1,""],MissingCommand:[2,1,1,""],NullCommand:[2,1,1,""],PauseCommand:[2,1,1,""],PingCommand:[2,1,1,""],PlayCommand:[2,1,1,""],PlaymodeCommand:[2,1,1,""],QueueCommand:[2,1,1,""],RageCommand:[2,1,1,""],ReminderCommand:[2,1,1,""],ShipCommand:[2,1,1,""],SkipCommand:[2,1,1,""],SmecdsCommand:[2,1,1,""],SummonCommand:[2,1,1,""],SyncCommand:[2,1,1,""],VideochannelCommand:[2,1,1,""],VideoinfoCommand:[2,1,1,""]},"royalnet.database":{Alchemy:[3,1,1,""],DatabaseConfig:[3,1,1,""],relationshiplinkchain:[3,5,1,""],tables:[3,0,0,"-"]},"royalnet.database.Alchemy":{__init__:[3,2,1,""],_create_tables:[3,2,1,""],session_acm:[3,2,1,""],session_cm:[3,2,1,""]},"royalnet.database.tables":{ActiveKvGroup:[3,1,1,""],Alias:[3,1,1,""],Diario:[3,1,1,""],Discord:[3,1,1,""],Keygroup:[3,1,1,""],Keyvalue:[3,1,1,""],Royal:[3,1,1,""],Telegram:[3,1,1,""],WikiPage:[3,1,1,""],WikiRevision:[3,1,1,""]},"royalnet.database.tables.ActiveKvGroup":{group:[3,4,1,""],group_name:[3,4,1,""],royal:[3,4,1,""],royal_id:[3,4,1,""]},"royalnet.database.tables.Alias":{alias:[3,4,1,""],royal:[3,4,1,""],royal_id:[3,4,1,""]},"royalnet.database.tables.Diario":{context:[3,4,1,""],creator:[3,4,1,""],creator_id:[3,4,1,""],diario_id:[3,4,1,""],media_url:[3,4,1,""],quoted:[3,4,1,""],quoted_account:[3,4,1,""],quoted_account_id:[3,4,1,""],spoiler:[3,4,1,""],text:[3,4,1,""],timestamp:[3,4,1,""]},"royalnet.database.tables.Discord":{avatar_hash:[3,4,1,""],discord_id:[3,4,1,""],discriminator:[3,4,1,""],full_username:[3,2,1,""],royal:[3,4,1,""],royal_id:[3,4,1,""],username:[3,4,1,""]},"royalnet.database.tables.Keygroup":{group_name:[3,4,1,""]},"royalnet.database.tables.Keyvalue":{group:[3,4,1,""],group_name:[3,4,1,""],key:[3,4,1,""],value:[3,4,1,""]},"royalnet.database.tables.Royal":{avatar:[3,4,1,""],password:[3,4,1,""],role:[3,4,1,""],uid:[3,4,1,""],username:[3,4,1,""]},"royalnet.database.tables.Telegram":{first_name:[3,4,1,""],last_name:[3,4,1,""],mention:[3,2,1,""],royal:[3,4,1,""],royal_id:[3,4,1,""],tg_id:[3,4,1,""],username:[3,4,1,""]},"royalnet.database.tables.WikiPage":{content:[3,4,1,""],page_id:[3,4,1,""],title:[3,4,1,""]},"royalnet.database.tables.WikiRevision":{author:[3,4,1,""],author_id:[3,4,1,""],diff:[3,4,1,""],page:[3,4,1,""],page_id:[3,4,1,""],reason:[3,4,1,""],revision_id:[3,4,1,""],timestamp:[3,4,1,""]},"royalnet.error":{ExternalError:[4,6,1,""],FileTooBigError:[4,6,1,""],InvalidConfigError:[4,6,1,""],InvalidInputError:[4,6,1,""],NoneFoundError:[4,6,1,""],RoyalnetRequestError:[4,6,1,""],RoyalnetResponseError:[4,6,1,""],TooManyFoundError:[4,6,1,""],UnregisteredError:[4,6,1,""],UnsupportedError:[4,6,1,""]},"royalnet.network":{ConnectionClosedError:[6,6,1,""],NetworkError:[6,6,1,""],NotConnectedError:[6,6,1,""],NotIdentifiedError:[6,6,1,""],Package:[6,1,1,""],Request:[6,1,1,""],Response:[6,1,1,""],ResponseError:[6,1,1,""],ResponseSuccess:[6,1,1,""],RoyalnetConfig:[6,1,1,""],RoyalnetLink:[6,1,1,""],RoyalnetServer:[6,1,1,""]},"royalnet.network.Package":{__init__:[6,2,1,""],from_dict:[6,3,1,""],from_json_bytes:[6,3,1,""],from_json_string:[6,3,1,""],reply:[6,2,1,""],to_dict:[6,2,1,""],to_json_bytes:[6,2,1,""],to_json_string:[6,2,1,""]},"royalnet.network.Request":{from_dict:[6,3,1,""],to_dict:[6,2,1,""]},"royalnet.network.Response":{from_dict:[6,7,1,""],raise_on_error:[6,2,1,""],to_dict:[6,2,1,""]},"royalnet.network.ResponseError":{raise_on_error:[6,2,1,""]},"royalnet.network.ResponseSuccess":{raise_on_error:[6,2,1,""]},"royalnet.network.RoyalnetLink":{connect:[6,2,1,""],identify:[6,2,1,""],receive:[6,2,1,""],request:[6,2,1,""],run:[6,2,1,""],send:[6,2,1,""]},"royalnet.network.RoyalnetServer":{find_client:[6,2,1,""],find_destination:[6,2,1,""],listener:[6,2,1,""],route_package:[6,2,1,""],serve:[6,2,1,""],start:[6,2,1,""]},"royalnet.utils":{Call:[7,1,1,""],Command:[7,1,1,""],CommandArgs:[7,1,1,""],NetworkHandler:[7,1,1,""],andformat:[7,5,1,""],asyncify:[7,5,1,""],cdj:[7,5,1,""],fileformat:[7,5,1,""],numberemojiformat:[7,5,1,""],plusformat:[7,5,1,""],safeformat:[7,5,1,""],sleep_until:[7,5,1,""],ytdldateformat:[7,5,1,""]},"royalnet.utils.Call":{__init__:[7,2,1,""],_session_init:[7,2,1,""],alchemy:[7,4,1,""],get_author:[7,2,1,""],interface_name:[7,4,1,""],interface_obj:[7,4,1,""],interface_prefix:[7,4,1,""],net_request:[7,2,1,""],reply:[7,2,1,""],run:[7,2,1,""],session_end:[7,2,1,""]},"royalnet.utils.Command":{command_description:[7,4,1,""],command_name:[7,4,1,""],command_syntax:[7,4,1,""],common:[7,7,1,""],network_handler_dict:[7,7,1,""],network_handlers:[7,4,1,""],require_alchemy_tables:[7,4,1,""]},"royalnet.utils.CommandArgs":{__getitem__:[7,2,1,""],joined:[7,2,1,""],match:[7,2,1,""],optional:[7,2,1,""]},"royalnet.utils.NetworkHandler":{message_type:[7,4,1,""]},"royalnet.web":{Royalprint:[8,1,1,""],create_app:[8,5,1,""]},royalnet:{audio:[0,0,0,"-"],bots:[1,0,0,"-"],commands:[2,0,0,"-"],database:[3,0,0,"-"],error:[4,0,0,"-"],network:[6,0,0,"-"],utils:[7,0,0,"-"],web:[8,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","staticmethod","Python static method"],"4":["py","attribute","Python attribute"],"5":["py","function","Python function"],"6":["py","exception","Python exception"],"7":["py","classmethod","Python class method"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:staticmethod","4":"py:attribute","5":"py:function","6":"py:exception","7":"py:classmethod"},terms:{"0x72f74b0":3,"0x72f7930":3,"0x72f7978":3,"0x72f7a98":3,"0x72f7ae0":3,"0x72f7c48":3,"0x72f7c90":3,"0x72f7f60":3,"0x730d228":3,"0x730d588":3,"20m":0,"abstract":7,"boolean":3,"byte":[0,6],"class":[0,1,2,3,6,7,8],"default":[3,7],"final":7,"float":0,"function":[0,4,7],"int":[0,6,7],"new":[0,1,2,3,7],"null":[1,6],"return":[0,1,4,6,7],"static":[0,6],"true":[0,3,7],"try":[0,1,7],"while":[0,1,3,4,7],For:7,Not:0,That:7,The:[0,1,3,4,6,7],Then:1,These:2,Use:3,__dict__:7,__doc__:7,__getitem__:7,__init__:[0,3,6,7],__module__:7,__slots__:7,__weakref__:7,_bot_factori:1,_call_factori:1,_create_t:3,_generate_gener:0,_handle_upd:1,_init_cli:1,_init_command:1,_init_databas:1,_init_royalnet:1,_init_voic:1,_network_handl:1,_session_init:7,_stop_download:0,_windowsselectoreventloop:6,abl:7,about:6,abstracteventloop:6,access:7,accord:0,accur:7,activekvgroup:3,add:[0,1,7],add_to_music_data:1,added:7,adding:7,addit:[6,7],address:6,advanc:0,advance_music_data:1,akin:6,alchemi:[1,3,7],alia:3,all:[0,6,7],allow:3,also:[0,6],altern:6,alwai:[0,1],amount:[0,7],andformat:7,ani:[0,7],anoth:[1,6],anymor:6,anystr:7,arg:[6,7],argument:[0,7],around:[0,3],arrai:7,as_uuid:3,associ:7,async:[0,3],asyncifi:7,asyncio:[1,6],asyncron:3,attempt:7,attribut:7,audio:[1,5],audio_filenam:0,audio_sourc:1,audiosourc:0,author:[3,7],author_id:3,authorcommand:2,autocomplet:7,avatar:3,avatar_hash:3,base:[0,1,6,7],been:[0,4],being:[4,7],bestaudio:0,between:7,big:4,biginteg:3,block:[1,7],blockingli:6,blueprint:8,bot:[0,2,3,4,5,7],botfath:1,botfather_command_str:1,both:3,call:[1,7],callabl:7,can:[0,2,4,6,7],cancel:7,cannot:[4,7],cdj:7,chain:1,chang:[0,1],change_pres:1,channel:[1,7],charact:7,chat:1,check:[0,3],ciaoruozicommand:2,class_:7,classmethod:[6,7],classyalnet:7,client:1,close:[6,7],clue:0,colorcommand:2,column:3,columndefault:3,command:[0,1,4,5,7],command_arg:7,command_descript:7,command_nam:[1,7],command_prefix:1,command_syntax:7,commandarg:7,common:7,commun:[2,6],complet:[0,4],compon:[3,4],config_obj:8,configur:[1,3,4],connect:[1,6,7],connectedcli:6,connectionclosederror:6,contain:[0,4,6],content:3,context:3,convers:6,convert:[0,6,7],core:3,coroutin:[1,7],correctli:4,correspond:[0,1],creat:[0,1,3,6,7],create_app:8,create_from_url:0,create_from_ytsearch:0,creator:3,creator_id:3,ct_co:[3,8],current:1,custom:[0,1],cvcommand:2,dai:7,data:[0,6,7],databas:[1,5,7],database_config:1,database_uri:3,databaseconfig:[1,3],date:7,dateparsercommand:2,datetim:[3,7],debug:6,declar:[3,7],delet:0,delete_audio_fil:0,delete_video_fil:0,describ:3,descript:[6,7],destin:[6,7],destination_conv_id:6,detail:3,develop:2,diario:3,diario_id:3,diariocommand:2,dict:[0,1,6,7],dictionari:[1,6],diff:3,discord:[0,1,3,7],discord_config:1,discord_id:3,discordbot:1,discordcli:1,discordconfig:1,discrimin:3,displai:[0,7],doc:3,document:0,doe:[0,7],doesn:[1,7],don:7,done:0,download:[0,4],dure:1,dynam:7,each:0,eas:7,edit:1,either:[0,7],element:[4,7],emb:0,empti:[0,1],encod:[0,6],end:3,ending_class:3,engin:3,ensur:7,error:[5,6,7],error_command:1,error_data:6,error_if_non:7,event:6,everi:[0,6],exampl:[0,7],except:[0,1,4,6],execut:[1,4,6,7],exist:[0,1,7],expect:4,ext:0,externalerror:4,extra:0,extra_info:6,extract:0,extract_info:0,factori:0,fals:[0,3,6,7],file:[0,1,4],fileformat:7,filenam:[0,7],filetoobigerror:4,find:[1,3,6,7],find_client:6,find_destin:6,first:0,first_nam:3,follow:3,foreignkei:3,format:[0,1,7],found:[4,7],from:[0,1,3,6,7],from_dict:6,from_json_byt:6,from_json_str:6,full_usernam:3,fullfil:7,game:2,gener:[0,1,7],genericbot:[1,3],get:[0,3,7],get_author:7,going:0,greater:7,group:[3,7],group_nam:3,guild:1,handl:[1,4],handler:6,has:[0,4,6,7],have:[0,1,7],here:0,html:3,http:3,identifi:[6,7],identity_column_nam:3,identity_t:[1,3],ifi:7,ignor:7,import_nam:8,incom:1,index:[5,7],inf:[0,6],infinit:0,info:[0,6],inherit:[0,1,6,7],initi:[0,1],input:[4,7],insid:0,instanc:1,instead:[0,7],integ:3,interfac:[1,4,7],interface_nam:[1,7],interface_obj:7,interface_prefix:7,interruptdownload:0,invalid:[4,6],invalidconfigerror:4,invalidinputerror:[4,7],is_opu:0,isn:0,item:[0,7],join:7,json:6,jsonabl:6,just:1,keep:0,kei:[3,7],keygroup:3,keyvalu:3,keyword:7,kvactivecommand:2,kvcommand:2,kvrollcommand:2,kwarg:[1,7],largebinari:3,last:7,last_nam:3,least:0,left:0,less:7,like:0,link:[1,4,6],link_typ:6,list:[0,1,6,7,8],listen:[1,6],locat:0,logger:0,login:1,look:4,loop:6,made:7,mai:[0,2,7],main:7,mainli:0,maintain:3,make:1,manag:3,markup:7,master_secret:6,master_t:[1,3],master_uri:6,match:[1,4,7],math:0,mean:7,media_url:3,memori:0,mention:3,messag:[1,6,7],message_typ:7,method:3,middl:7,minimum:7,miscellan:7,miss:7,missing_command:1,missingcommand:2,modul:5,month:7,more:[1,3],multipl:[1,3,4],music_data:1,must:[6,7],name:[0,1,6,7,8],need:[1,2],net_request:7,network:[1,4,5,7],network_handl:[1,7],network_handler_dict:7,networkerror:6,networkhandl:7,next:[0,1],nid:6,no_warn:0,nobodi:6,node:[6,7],non:[0,4,7],none:[0,1,3,6,7,8],nonefounderror:4,noplaylist:0,notat:7,notconnectederror:6,noth:[6,7],notidentifiederror:6,notimpl:[1,7],notimplementederror:0,now_plai:0,nullabl:3,nullcommand:[1,2],number:[0,6],numberemojiformat:7,object:[0,1,3,7],offset:1,onc:[0,3],one:4,ones:[1,2],onli:[4,7],option:[0,1,3,6,7,8],optional_arg:7,opu:0,order:0,org:3,other:[0,1,4,6,7],otherwis:[1,6,7],output:7,outtmpl:0,packag:6,packet:6,page:[3,5],page_id:3,paramet:[0,1,3,6,7],pass:[0,7],password:3,past:1,path:[3,6],pattern:7,pausecommand:2,pcm:0,perman:0,pickl:7,pingcommand:2,plai:[0,1],playcommand:2,playlist:0,playmod:0,playmodecommand:2,plusformat:7,pool:0,port:6,possibl:[0,7],postgresql:3,prefix:7,prepar:6,prepend:7,presenc:1,preview:0,previous:7,primary_kei:3,probabl:[0,2,7],prompt:1,properti:[0,3],queue:0,queue_preview:0,queuecommand:2,quiet:0,quot:3,quoted_account:3,quoted_account_id:3,ragecommand:2,rais:[0,1,4,6,7],raise_on_error:6,random:0,read:0,real:6,reason:3,receiv:[1,4,6,7],reciev:6,recommend:0,recreat:6,regex:7,regist:4,relat:[0,3,6],relationshiplinkchain:3,relationshipproperti:3,remindercommand:2,remov:0,repeat:0,replac:7,repli:[6,7],repres:1,request:[1,4,6,7],request_dict:1,request_handl:6,requir:[1,3,4,7],require_alchemy_t:7,require_at_least:7,required_arg:7,required_secret:6,required_t:8,respons:[1,4,6],responseerror:[4,6],responsesuccess:6,result:7,retriev:7,revis:3,revision_id:3,role:3,root_path:8,rout:6,route_packag:6,row:7,royal:[2,3],royal_id:3,royalnet_config:1,royalnetconfig:[1,6],royalnetlink:[1,6,7],royalnetrequesterror:4,royalnetresponseerror:4,royalnetserv:6,royalpcmaudio:[0,1],royalpcmfil:0,royalprint:8,rpf:0,run:[1,6,7],safeformat:7,search:[0,5],second:7,secret:6,select:[0,3],self:[0,1,6],send:[6,7],sent:[6,7],separ:7,sequenc:[6,7],serv:6,server:6,session:7,session_acm:3,session_cm:3,session_end:7,set:[1,3,7,8],shipcommand:2,should:[1,6,7],signal:0,singl:[1,3],skip:4,skipcommand:2,sleep_until:7,small:7,smecdscommand:2,some:0,someth:[4,7],somewher:6,song:[0,1],soon:0,sourc:6,source_conv_id:6,space:7,specif:[1,7],specifi:[0,1,4,7],spoiler:3,sqlalchemi:[3,7],start:[1,3,6],starting_class:3,starting_list:0,starting_pool:0,statement:3,static_fold:8,static_url_path:8,statu:1,store:4,str:[0,1,3,6,7],string:[0,1,3,6,7],stuff:0,sub:7,subdomain:8,submodul:3,success:6,suit:2,summoncommand:2,support:4,synccommand:2,syntax:7,tabl:[1,7],tailor:2,task:1,telegram:[1,3,7],telegram_config:1,telegrambot:[1,7],telegramcal:1,telegramconfig:1,template_fold:8,text:[3,7],tg_id:3,than:7,thei:2,them:3,therefor:4,thi:[0,4,6,7],those:0,through:7,time:6,timestamp:3,titl:[0,3],to_dict:6,to_discord_emb:0,to_json_byt:6,to_json_str:6,token:1,too:4,toomanyfounderror:4,tupl:3,two:7,type:[1,3,6,7,8],uhhh:0,uid:3,underscor:7,undescrib:7,unexpect:7,unexpectedli:6,union:0,univers:7,unregisterederror:[4,7],unsupportederror:4,until:[0,7],updat:1,update_activity_with_source_titl:1,uri:3,url:0,url_default:8,url_prefix:8,use:[0,3],used:[0,1,2,3,6,7],useful:[0,2,7],user:[4,7],usernam:3,using:[1,7],usual:[0,6],utf8:6,util:[1,5],uuid:[3,7],valid:7,valu:[0,3,6,7],variabl:1,variou:1,veri:0,video:0,video_filenam:0,videochannelcommand:2,videoinfocommand:2,videos_left:0,voic:[0,1],wai:0,wait:7,want:[0,7],warn:0,web:5,websocket:6,websocketserverprotocol:6,weird:[0,7],went:4,were:4,what:0,when:[0,7],where:7,which:[0,6,7],why:0,wiki:3,wikipag:3,wikirevis:3,without:7,won:2,word:7,work:7,worth:0,would:4,wrapper:[0,3],wrong:4,year:7,yet:6,yield:0,you:[0,7],your:2,youtub:[0,7],youtube_dl:0,youtubedl:0,ytdl_arg:0,ytdl_filenam:0,ytdldateformat:7,ytdlfile:0,ytdlinfo:0,yyyi:7,yyyymmdd:7},titles:["royalnet.audio","royalnet.bots","royalnet.commands","royalnet.database","royalnet.error","royalnet","royalnet.network","royalnet.utils","royalnet.web"],titleterms:{audio:0,bot:1,command:2,databas:3,error:4,indic:5,network:6,royalnet:[0,1,2,3,4,5,6,7,8],tabl:[3,5],util:7,web:8}}) \ No newline at end of file +Search.setIndex({docnames:["audio","bots","commands","database","error","index","network","utils","web"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["audio.rst","bots.rst","commands.rst","database.rst","error.rst","index.rst","network.rst","utils.rst","web.rst"],objects:{"royalnet.audio":{PlayMode:[0,1,1,""],Playlist:[0,1,1,""],Pool:[0,1,1,""],RoyalPCMAudio:[0,1,1,""],RoyalPCMFile:[0,1,1,""],YtdlFile:[0,1,1,""],YtdlInfo:[0,1,1,""]},"royalnet.audio.PlayMode":{"delete":[0,2,1,""],__init__:[0,2,1,""],_generate_generator:[0,2,1,""],add:[0,2,1,""],next:[0,2,1,""],queue_preview:[0,2,1,""],videos_left:[0,2,1,""]},"royalnet.audio.Playlist":{"delete":[0,2,1,""],__init__:[0,2,1,""],_generate_generator:[0,2,1,""],add:[0,2,1,""],queue_preview:[0,2,1,""],videos_left:[0,2,1,""]},"royalnet.audio.Pool":{"delete":[0,2,1,""],__init__:[0,2,1,""],_generate_generator:[0,2,1,""],add:[0,2,1,""],queue_preview:[0,2,1,""],videos_left:[0,2,1,""]},"royalnet.audio.RoyalPCMAudio":{"delete":[0,2,1,""],__init__:[0,2,1,""],create_from_url:[0,3,1,""],create_from_ytsearch:[0,3,1,""],is_opus:[0,2,1,""],read:[0,2,1,""]},"royalnet.audio.RoyalPCMFile":{audio_filename:[0,4,1,""],create_from_url:[0,3,1,""],create_from_ytsearch:[0,3,1,""],delete_audio_file:[0,2,1,""],ytdl_args:[0,4,1,""],ytdl_filename:[0,4,1,""]},"royalnet.audio.YtdlFile":{_stop_download:[0,2,1,""],create_from_url:[0,3,1,""],delete_video_file:[0,2,1,""],ytdl_args:[0,4,1,""]},"royalnet.audio.YtdlInfo":{__init__:[0,2,1,""],create_from_url:[0,3,1,""],download:[0,2,1,""],to_discord_embed:[0,2,1,""]},"royalnet.bots":{DiscordBot:[1,1,1,""],DiscordConfig:[1,1,1,""],GenericBot:[1,1,1,""],TelegramBot:[1,1,1,""],TelegramConfig:[1,1,1,""]},"royalnet.bots.DiscordBot":{_bot_factory:[1,2,1,""],_call_factory:[1,2,1,""],_init_client:[1,2,1,""],_init_voice:[1,2,1,""],add_to_music_data:[1,2,1,""],advance_music_data:[1,2,1,""],interface_name:[1,4,1,""],run:[1,2,1,""],update_activity_with_source_title:[1,2,1,""]},"royalnet.bots.GenericBot":{_call_factory:[1,2,1,""],_init_commands:[1,2,1,""],_init_database:[1,2,1,""],_init_royalnet:[1,2,1,""],_network_handler:[1,2,1,""],call:[1,2,1,""],interface_name:[1,4,1,""],run:[1,2,1,""]},"royalnet.bots.TelegramBot":{_call_factory:[1,2,1,""],_handle_update:[1,2,1,""],_init_client:[1,2,1,""],botfather_command_string:[1,4,1,""],interface_name:[1,4,1,""],run:[1,2,1,""]},"royalnet.commands":{AuthorCommand:[2,1,1,""],CiaoruoziCommand:[2,1,1,""],ColorCommand:[2,1,1,""],CvCommand:[2,1,1,""],DateparserCommand:[2,1,1,""],DiarioCommand:[2,1,1,""],KvCommand:[2,1,1,""],KvactiveCommand:[2,1,1,""],KvrollCommand:[2,1,1,""],MissingCommand:[2,1,1,""],NullCommand:[2,1,1,""],PauseCommand:[2,1,1,""],PingCommand:[2,1,1,""],PlayCommand:[2,1,1,""],PlaymodeCommand:[2,1,1,""],QueueCommand:[2,1,1,""],RageCommand:[2,1,1,""],ReminderCommand:[2,1,1,""],ShipCommand:[2,1,1,""],SkipCommand:[2,1,1,""],SmecdsCommand:[2,1,1,""],SummonCommand:[2,1,1,""],SyncCommand:[2,1,1,""],VideochannelCommand:[2,1,1,""],VideoinfoCommand:[2,1,1,""]},"royalnet.database":{Alchemy:[3,1,1,""],DatabaseConfig:[3,1,1,""],relationshiplinkchain:[3,5,1,""],tables:[3,0,0,"-"]},"royalnet.database.Alchemy":{__init__:[3,2,1,""],_create_tables:[3,2,1,""],session_acm:[3,2,1,""],session_cm:[3,2,1,""]},"royalnet.database.tables":{ActiveKvGroup:[3,1,1,""],Alias:[3,1,1,""],Diario:[3,1,1,""],Discord:[3,1,1,""],Keygroup:[3,1,1,""],Keyvalue:[3,1,1,""],Royal:[3,1,1,""],Telegram:[3,1,1,""],WikiPage:[3,1,1,""],WikiRevision:[3,1,1,""]},"royalnet.database.tables.ActiveKvGroup":{group:[3,4,1,""],group_name:[3,4,1,""],royal:[3,4,1,""],royal_id:[3,4,1,""]},"royalnet.database.tables.Alias":{alias:[3,4,1,""],royal:[3,4,1,""],royal_id:[3,4,1,""]},"royalnet.database.tables.Diario":{context:[3,4,1,""],creator:[3,4,1,""],creator_id:[3,4,1,""],diario_id:[3,4,1,""],media_url:[3,4,1,""],quoted:[3,4,1,""],quoted_account:[3,4,1,""],quoted_account_id:[3,4,1,""],spoiler:[3,4,1,""],text:[3,4,1,""],timestamp:[3,4,1,""]},"royalnet.database.tables.Discord":{avatar_hash:[3,4,1,""],discord_id:[3,4,1,""],discriminator:[3,4,1,""],full_username:[3,2,1,""],royal:[3,4,1,""],royal_id:[3,4,1,""],username:[3,4,1,""]},"royalnet.database.tables.Keygroup":{group_name:[3,4,1,""]},"royalnet.database.tables.Keyvalue":{group:[3,4,1,""],group_name:[3,4,1,""],key:[3,4,1,""],value:[3,4,1,""]},"royalnet.database.tables.Royal":{avatar:[3,4,1,""],password:[3,4,1,""],role:[3,4,1,""],uid:[3,4,1,""],username:[3,4,1,""]},"royalnet.database.tables.Telegram":{first_name:[3,4,1,""],last_name:[3,4,1,""],mention:[3,2,1,""],royal:[3,4,1,""],royal_id:[3,4,1,""],tg_id:[3,4,1,""],username:[3,4,1,""]},"royalnet.database.tables.WikiPage":{content:[3,4,1,""],css:[3,4,1,""],format:[3,4,1,""],page_id:[3,4,1,""],title:[3,4,1,""]},"royalnet.database.tables.WikiRevision":{author:[3,4,1,""],author_id:[3,4,1,""],diff:[3,4,1,""],page:[3,4,1,""],page_id:[3,4,1,""],reason:[3,4,1,""],revision_id:[3,4,1,""],timestamp:[3,4,1,""]},"royalnet.error":{ExternalError:[4,6,1,""],FileTooBigError:[4,6,1,""],InvalidConfigError:[4,6,1,""],InvalidInputError:[4,6,1,""],NoneFoundError:[4,6,1,""],RoyalnetRequestError:[4,6,1,""],RoyalnetResponseError:[4,6,1,""],TooManyFoundError:[4,6,1,""],UnregisteredError:[4,6,1,""],UnsupportedError:[4,6,1,""]},"royalnet.network":{ConnectionClosedError:[6,6,1,""],NetworkError:[6,6,1,""],NotConnectedError:[6,6,1,""],NotIdentifiedError:[6,6,1,""],Package:[6,1,1,""],Request:[6,1,1,""],Response:[6,1,1,""],ResponseError:[6,1,1,""],ResponseSuccess:[6,1,1,""],RoyalnetConfig:[6,1,1,""],RoyalnetLink:[6,1,1,""],RoyalnetServer:[6,1,1,""]},"royalnet.network.Package":{__init__:[6,2,1,""],from_dict:[6,3,1,""],from_json_bytes:[6,3,1,""],from_json_string:[6,3,1,""],reply:[6,2,1,""],to_dict:[6,2,1,""],to_json_bytes:[6,2,1,""],to_json_string:[6,2,1,""]},"royalnet.network.Request":{from_dict:[6,3,1,""],to_dict:[6,2,1,""]},"royalnet.network.Response":{from_dict:[6,7,1,""],raise_on_error:[6,2,1,""],to_dict:[6,2,1,""]},"royalnet.network.ResponseError":{raise_on_error:[6,2,1,""]},"royalnet.network.ResponseSuccess":{raise_on_error:[6,2,1,""]},"royalnet.network.RoyalnetLink":{connect:[6,2,1,""],identify:[6,2,1,""],receive:[6,2,1,""],request:[6,2,1,""],run:[6,2,1,""],send:[6,2,1,""]},"royalnet.network.RoyalnetServer":{find_client:[6,2,1,""],find_destination:[6,2,1,""],listener:[6,2,1,""],route_package:[6,2,1,""],serve:[6,2,1,""],start:[6,2,1,""]},"royalnet.utils":{Call:[7,1,1,""],Command:[7,1,1,""],CommandArgs:[7,1,1,""],NetworkHandler:[7,1,1,""],andformat:[7,5,1,""],asyncify:[7,5,1,""],cdj:[7,5,1,""],discord_escape:[7,5,1,""],fileformat:[7,5,1,""],numberemojiformat:[7,5,1,""],plusformat:[7,5,1,""],safeformat:[7,5,1,""],sleep_until:[7,5,1,""],telegram_escape:[7,5,1,""],ytdldateformat:[7,5,1,""]},"royalnet.utils.Call":{__init__:[7,2,1,""],_session_init:[7,2,1,""],alchemy:[7,4,1,""],get_author:[7,2,1,""],interface_name:[7,4,1,""],interface_obj:[7,4,1,""],interface_prefix:[7,4,1,""],net_request:[7,2,1,""],reply:[7,2,1,""],run:[7,2,1,""],session_end:[7,2,1,""]},"royalnet.utils.Command":{command_description:[7,4,1,""],command_name:[7,4,1,""],command_syntax:[7,4,1,""],common:[7,7,1,""],network_handler_dict:[7,7,1,""],network_handlers:[7,4,1,""],require_alchemy_tables:[7,4,1,""]},"royalnet.utils.CommandArgs":{__getitem__:[7,2,1,""],joined:[7,2,1,""],match:[7,2,1,""],optional:[7,2,1,""]},"royalnet.utils.NetworkHandler":{message_type:[7,4,1,""]},"royalnet.web":{Royalprint:[8,1,1,""],create_app:[8,5,1,""],royalprints:[8,0,0,"-"]},royalnet:{audio:[0,0,0,"-"],bots:[1,0,0,"-"],commands:[2,0,0,"-"],database:[3,0,0,"-"],error:[4,0,0,"-"],network:[6,0,0,"-"],utils:[7,0,0,"-"],web:[8,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","staticmethod","Python static method"],"4":["py","attribute","Python attribute"],"5":["py","function","Python function"],"6":["py","exception","Python exception"],"7":["py","classmethod","Python class method"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:staticmethod","4":"py:attribute","5":"py:function","6":"py:exception","7":"py:classmethod"},terms:{"0x7f46f60":3,"0x7f4e108":3,"0x7f4e2b8":3,"0x7f4e3d8":3,"0x7f4e420":3,"0x7f4e4f8":3,"0x7f4e6a8":3,"0x7f4e930":3,"0x7f4ea08":3,"0x7f4ea50":3,"20m":0,"abstract":7,"boolean":3,"byte":[0,6],"class":[0,1,2,3,6,7,8],"default":[3,7],"final":7,"float":0,"function":[0,4,7],"int":[0,6,7],"new":[0,1,2,3,7],"null":[1,6],"return":[0,1,4,6,7,8],"static":[0,6],"true":[0,3,7],"try":[0,1,7],"while":[0,1,3,4,7],For:7,Not:0,That:7,The:[0,1,3,4,6,7,8],Then:1,These:2,Use:[3,8],__dict__:7,__doc__:7,__getitem__:7,__init__:[0,3,6,7],__module__:7,__slots__:7,__weakref__:7,_bot_factori:1,_call_factori:1,_create_t:3,_generate_gener:0,_handle_upd:1,_init_cli:1,_init_command:1,_init_databas:1,_init_royalnet:1,_init_voic:1,_network_handl:1,_session_init:7,_stop_download:0,abl:7,about:6,abstracteventloop:[1,6,7],access:7,accord:0,accur:7,activekvgroup:3,add:[0,1,7],add_to_music_data:1,added:7,adding:7,addit:[6,7,8],address:6,advanc:0,advance_music_data:1,akin:6,alchemi:[1,3,7],alia:3,all:[0,6,7],allow:3,also:[0,6,8],altern:6,alwai:[0,1],amount:[0,7],andformat:7,ani:[0,7],anoth:[1,6],anymor:6,anystr:7,app:8,applic:8,arg:[6,7],argument:[0,7],around:[0,3],arrai:7,as_uuid:3,associ:7,async:[0,3],asyncifi:7,asyncio:[1,6,7],asyncron:3,attempt:7,attribut:7,audio:[1,5],audio_filenam:0,audio_sourc:1,audiosourc:0,author:[3,7],author_id:3,authorcommand:2,autocomplet:7,avatar:3,avatar_hash:3,base:[0,1,6,7],been:[0,4],being:[4,7],bestaudio:0,between:7,big:4,biginteg:3,block:[1,7],blockingli:6,blueprint:8,bot:[0,2,3,4,5,7],botfath:1,botfather_command_str:1,both:3,call:[1,7],callabl:7,can:[0,2,4,6,7,8],cancel:7,cannot:[4,7],caution:8,cdj:7,chain:1,chang:[0,1],change_pres:1,channel:[1,7],charact:7,chat:1,check:[0,3],ciaoruozicommand:2,class_:7,classmethod:[6,7],classyalnet:7,client:1,close:[6,7],clue:[0,8],code:[7,8],colorcommand:2,column:3,columndefault:3,command:[0,1,4,5,7],command_arg:7,command_descript:7,command_nam:[1,7],command_prefix:1,command_syntax:7,commandarg:7,common:7,commun:[2,6],complet:[0,4],compon:[3,4],config:8,config_obj:8,configur:[1,3,4],connect:[1,6,7,8],connectedcli:6,connectionclosederror:6,contain:[0,4,6,8],content:3,context:3,convers:6,convert:[0,6,7],core:3,coroutin:[1,7],correctli:4,correspond:[0,1],creat:[0,1,3,6,7,8],create_app:8,create_from_url:0,create_from_ytsearch:0,creator:3,creator_id:3,css:3,ct_co:[3,8],current:[1,7],custom:[0,1],cvcommand:2,dai:7,data:[0,6,7],databas:[1,5,7,8],database_config:1,database_uri:3,databaseconfig:[1,3],date:7,dateparsercommand:2,datetim:[3,7],db_path:8,declar:[3,7],delet:0,delete_audio_fil:0,delete_video_fil:0,describ:3,descript:[6,7],destin:[6,7],destination_conv_id:6,detail:3,develop:2,diario:3,diario_id:3,diariocommand:2,dict:[0,1,6,7],dictionari:[1,6],diff:3,discord:[0,1,3,7],discord_config:1,discord_escap:7,discord_id:3,discordbot:1,discordcli:1,discordconfig:1,discrimin:3,displai:[0,7],doc:3,document:0,doe:[0,7,8],doesn:[1,7],don:7,done:0,download:[0,4],dure:1,dynam:7,each:0,eas:7,edit:[1,8],either:[0,7],element:[4,7],emb:0,empti:[0,1],encod:[0,6],end:3,ending_class:3,engin:3,ensur:7,envvar:8,error:[5,6,7],error_command:1,error_data:6,error_if_non:7,escap:7,even:[7,8],event:[1,6,7],everi:[0,6],everyth:7,exampl:[0,7],except:[0,1,4,6],execut:[1,4,6,7],exist:[0,1,7],expect:4,ext:0,externalerror:4,extra:0,extra_info:6,extract:0,extract_info:0,factori:0,fals:[0,3,7],file:[0,1,4],fileformat:7,filenam:[0,7],filetoobigerror:4,find:[1,3,6,7],find_client:6,find_destin:6,first:0,first_nam:3,flask:8,follow:3,foreignkei:3,format:[0,1,3,7],found:[4,7],from:[0,1,3,6,7,8],from_dict:6,from_json_byt:6,from_json_str:6,from_object:8,full_usernam:3,fullfil:7,game:2,gener:[0,1,7],genericbot:[1,3],get:[0,3,7,8],get_author:7,github:5,going:0,greater:7,group:[3,7],group_nam:3,guild:1,handl:[1,4],handler:6,has:[0,4,6,7],have:[0,1,7,8],here:0,how:8,html:3,http:3,identifi:[6,7],identity_column_nam:3,identity_t:[1,3],ifi:7,ignor:7,import_nam:8,incom:1,index:[5,7],inf:[0,6],infinit:0,info:[0,6],inherit:[0,1,6,7],initi:[0,1,8],input:[4,7],insid:0,instanc:1,instead:[0,7],integ:3,interfac:[1,4,7],interface_nam:[1,7],interface_obj:7,interface_prefix:7,interruptdownload:0,invalid:[4,6],invalidconfigerror:4,invalidinputerror:[4,7],is_opu:0,isn:0,item:[0,7],join:7,json:6,jsonabl:6,just:1,keep:0,kei:[3,7,8],keygroup:3,keyvalu:3,keyword:7,kvactivecommand:2,kvcommand:2,kvrollcommand:2,kwarg:[1,7],largebinari:3,last:7,last_nam:3,least:0,left:0,less:7,like:0,link:[1,4,6],link_typ:6,list:[0,1,6,7,8],listen:[1,6],locat:0,logger:0,login:1,look:4,loop:[1,6,7],made:7,mai:[0,2,7],main:7,mainli:0,maintain:3,make:1,manag:3,markdown:3,markup:7,master_secret:6,master_t:[1,3],master_uri:6,match:[1,4,7],math:0,mean:7,media_url:3,memori:0,mention:3,messag:[1,6,7],message_typ:7,method:3,middl:7,minimum:7,miscellan:7,miss:7,missing_command:1,missingcommand:2,month:7,more:[1,3],multipl:[1,3,4],music_data:1,must:[6,7],name:[0,1,6,7,8],need:[1,2],net_request:7,network:[1,4,5,7],network_handl:[1,7],network_handler_dict:7,networkerror:6,networkhandl:7,next:[0,1],nid:6,no_warn:0,nobodi:6,node:[6,7],non:[0,4,7],none:[0,1,3,6,7,8],nonefounderror:4,noplaylist:0,notat:7,notconnectederror:6,noth:[6,7],notidentifiederror:6,notimpl:[1,7],notimplementederror:0,now_plai:0,nullabl:3,nullcommand:[1,2],number:[0,6],numberemojiformat:7,object:[0,1,3,7,8],offset:1,onc:[0,3],one:4,ones:[1,2],onli:[4,7],option:[0,1,3,6,7,8],optional_arg:7,opu:0,order:0,org:3,other:[0,1,4,6,7],otherwis:[1,6,7],output:7,outtmpl:0,packag:6,packet:6,page:3,page_id:3,paramet:[0,1,3,6,7,8],pass:[0,7,8],password:3,past:1,path:[3,6],pattern:7,pausecommand:2,pcm:0,perman:0,pickl:7,pingcommand:2,plai:[0,1],playcommand:2,playlist:0,playmod:0,playmodecommand:2,plusformat:7,pool:0,port:6,possibl:[0,7],postgresql:3,prefix:7,prepar:6,prepend:7,presenc:1,preview:0,previous:7,primary_kei:3,probabl:[0,2,7],prompt:1,properti:[0,3],queue:0,queue_preview:0,queuecommand:2,quiet:0,quot:3,quoted_account:3,quoted_account_id:3,ragecommand:2,rais:[0,1,4,6,7],raise_on_error:6,random:0,read:0,real:6,realli:8,reason:3,receiv:[1,4,6,7],reciev:6,recommend:0,recreat:6,regex:7,regist:[4,8],relat:[0,3,6],relationshiplinkchain:3,relationshipproperti:3,remindercommand:2,remov:0,repeat:0,replac:7,repli:[6,7],repres:1,request:[1,4,6,7],request_dict:1,request_handl:6,requir:[1,3,4,7,8],require_alchemy_t:7,require_at_least:7,required_arg:7,required_secret:6,required_t:8,respons:[1,4,6],responseerror:[4,6],responsesuccess:6,result:7,retriev:7,revis:3,revision_id:3,role:3,root_path:8,rout:6,route_packag:6,row:7,royal:[2,3],royal_id:3,royalcod:7,royalnet_config:1,royalnetconfig:[1,6],royalnetlink:[1,6,7],royalnetrequesterror:4,royalnetresponseerror:4,royalnetserv:6,royalpcmaudio:[0,1],royalpcmfil:0,royalprint:5,rpf:0,run:[1,6,7],safeformat:7,search:0,second:7,secret:6,secret_kei:8,select:[0,3],self:[0,1,6],send:[6,7],sent:[6,7],separ:7,sequenc:[6,7],serv:6,server:[6,8],session:7,session_acm:3,session_cm:3,session_end:7,set:[1,3,7,8],shipcommand:2,should:[1,6,7],signal:0,singl:[1,3],skip:4,skipcommand:2,sleep_until:7,small:7,smecdscommand:2,some:[0,8],someth:[4,7],somewher:6,song:[0,1],soon:0,sourc:6,source_conv_id:6,space:7,specif:[1,7],specifi:[0,1,4,7],spoiler:3,sqlalchemi:[3,7],start:[1,3,6],starting_class:3,starting_list:0,starting_pool:0,statement:3,static_fold:8,static_url_path:8,statu:1,store:4,str:[0,1,3,6,7],string:[0,1,3,6,7],stuff:0,sub:7,subdomain:8,submodul:3,success:6,suit:2,summoncommand:2,support:4,synccommand:2,syntax:7,tabl:[1,5,7],tailor:2,task:1,telegram:[1,3,7],telegram_config:1,telegram_escap:7,telegrambot:[1,7],telegramcal:1,telegramconfig:1,template_fold:8,text:[3,7],tg_id:3,than:7,thei:2,them:3,therefor:4,thi:[0,4,6,7,8],those:0,through:7,time:6,timestamp:3,titl:[0,3],to_dict:6,to_discord_emb:0,to_json_byt:6,to_json_str:6,token:1,too:4,toomanyfounderror:4,tupl:3,two:7,type:[1,3,6,7,8],uhhh:0,uid:3,underscor:7,undescrib:7,unexpect:7,unexpectedli:6,union:0,univers:7,unregisterederror:[4,7],unsupportederror:4,until:[0,7],updat:1,update_activity_with_source_titl:1,uri:3,url:0,url_default:8,url_prefix:8,use:[0,3],used:[0,1,2,3,6,7,8],useful:[0,2,7],user:[4,7],usernam:3,using:[1,7],usual:[0,6],utf8:6,util:[1,5],uuid:[3,7],valid:7,valu:[0,3,6,7],variabl:1,variou:1,veri:0,video:0,video_filenam:0,videochannelcommand:2,videoinfocommand:2,videos_left:0,voic:[0,1],wai:0,wait:7,want:[0,7],warn:0,web:5,websocket:6,websocketserverprotocol:6,weird:[0,7],went:4,were:4,what:0,when:[0,7],where:7,which:[0,6,7],why:[0,8],wiki:3,wikipag:3,wikirevis:3,without:7,won:2,word:7,work:[7,8],worth:0,would:4,wrapper:[0,3],written:8,wrong:4,year:7,yet:6,yield:0,you:[0,7],your:2,youtub:[0,7],youtube_dl:0,youtubedl:0,ytdl_arg:0,ytdl_filenam:0,ytdldateformat:7,ytdlfile:0,ytdlinfo:0,yyyi:7,yyyymmdd:7},titles:["royalnet.audio","royalnet.bots","royalnet.commands","royalnet.database","royalnet.error","royalnet","royalnet.network","royalnet.utils","royalnet.web"],titleterms:{audio:0,bot:1,command:2,databas:3,error:4,link:5,network:6,royalnet:[0,1,2,3,4,5,6,7,8],royalprint:8,some:5,tabl:3,useful:5,util:7,web:8}}) \ No newline at end of file diff --git a/docs/html/utils.html b/docs/html/utils.html index f0883517..e541618d 100644 --- a/docs/html/utils.html +++ b/docs/html/utils.html @@ -172,7 +172,7 @@
      -class royalnet.utils.Call(channel, command: Type[royalnet.utils.command.Command], command_args: List[str] = None, **kwargs)
      +class royalnet.utils.Call(channel, command: Type[royalnet.utils.command.Command], command_args: List[str] = None, loop: asyncio.events.AbstractEventLoop = None, **kwargs)

      A command call. An abstract class, sub-bots should create a new call class from this.

      @@ -200,7 +200,7 @@
      -__init__(channel, command: Type[royalnet.utils.command.Command], command_args: List[str] = None, **kwargs)
      +__init__(channel, command: Type[royalnet.utils.command.Command], command_args: List[str] = None, loop: asyncio.events.AbstractEventLoop = None, **kwargs)

      Create the call.

      Parameters
      @@ -571,6 +571,26 @@ That probably means, the database row identifying the user.

      royalnet.utils.numberemojiformat(l: List[str]) → str
      +
      +
      +royalnet.utils.telegram_escape(string: str) → str
      +

      Escape a string to be sent through Telegram, and format it using RoyalCode.

      +
      +

      Warning

      +

      Currently escapes everything, even items in code blocks.

      +
      +
      + +
      +
      +royalnet.utils.discord_escape(string: str) → str
      +

      Escape a string to be sent through Discord, and format it using RoyalCode.

      +
      +

      Warning

      +

      Currently escapes everything, even items in code blocks.

      +
      +
      + diff --git a/docs/html/web.html b/docs/html/web.html index 65428d9f..5e85fa55 100644 --- a/docs/html/web.html +++ b/docs/html/web.html @@ -87,7 +87,8 @@
    • royalnet.network
    • royalnet.utils
    • royalnet.error
    • -
    • royalnet.web @@ -161,13 +162,37 @@
      royalnet.web.create_app(config_obj: Type[CT_co], blueprints: List[royalnet.web.royalprint.Royalprint])
      -
      +

      Create a flask.Flask application object.

      +

      Gets the app.secret_key from the SECRET_KEY envvar.

      +

      Also requires a DB_PATH key in config_obj to initialize the database connection.

      +
      +

      Warning

      +

      The code for this class was written at 1 AM, and I have no clue of how and why it works or even of if it really does work. +Use with caution?

      +
      +
      +
      Parameters
      +
        +
      • config_obj – The object to be passed to flask.Flask.config.from_object().

      • +
      • blueprints – A list of blueprints to be registered to the application.

      • +
      +
      +
      Returns
      +

      The created flask.Flask.

      +
      +
      +
    • class royalnet.web.Royalprint(name, import_name, static_folder=None, static_url_path=None, template_folder=None, url_prefix=None, subdomain=None, url_defaults=None, root_path=None, required_tables: Optional[set] = None)
      -
      +

      An edited flask.Blueprint containing an additional required_tables parameter.

      +
      +
      +

      Royalprints

      +

      Some Royalprints that can be used with the Royalnet Flask server.

      +
      diff --git a/docs_source/index.rst b/docs_source/index.rst index e8ada55e..5e7c7391 100644 --- a/docs_source/index.rst +++ b/docs_source/index.rst @@ -14,9 +14,8 @@ royalnet web -Indices and tables -================== +Some useful links +------------------------------------ -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` \ No newline at end of file +* `Royalnet on GitHub `_ +* :ref:`genindex` \ No newline at end of file diff --git a/docs_source/web.rst b/docs_source/web.rst index ea569545..cabaf108 100644 --- a/docs_source/web.rst +++ b/docs_source/web.rst @@ -10,3 +10,11 @@ royalnet.web :private-members: :undoc-members: + +Royalprints +------------------------------------ + +.. automodule:: royalnet.web.royalprints + :members: + :private-members: + :undoc-members: diff --git a/royalnet/royalgamesweb.py b/royalnet/royalgamesweb.py index 47481753..24a4b6f6 100644 --- a/royalnet/royalgamesweb.py +++ b/royalnet/royalgamesweb.py @@ -1,6 +1,6 @@ import os from .web import create_app -from .web.blueprints import home, wikiview, tglogin +from .web.royalprints import rp_home, rp_wikiview, rp_tglogin class TestConfig: @@ -8,7 +8,7 @@ class TestConfig: TG_AK = os.environ["TG_AK"] -app = create_app(TestConfig, [home, wikiview, tglogin]) +app = create_app(TestConfig, [rp_home, rp_wikiview, rp_tglogin]) if __name__ == "__main__": diff --git a/royalnet/web/__init__.py b/royalnet/web/__init__.py index 35cb06a7..d3899afd 100644 --- a/royalnet/web/__init__.py +++ b/royalnet/web/__init__.py @@ -1,5 +1,4 @@ from .flaskserver import create_app from .royalprint import Royalprint -from . import blueprints -__all__ = ["create_app", "Royalprint", "blueprints"] +__all__ = ["create_app", "Royalprint"] diff --git a/royalnet/web/blueprints/__init__.py b/royalnet/web/blueprints/__init__.py deleted file mode 100644 index dba30e4e..00000000 --- a/royalnet/web/blueprints/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from .home import bp as home -from .wikiview import bp as wikiview -from .tglogin import bp as tglogin - -__all__ = ["home", "wikiview", "tglogin"] diff --git a/royalnet/web/flaskserver.py b/royalnet/web/flaskserver.py index 196f8954..260af039 100644 --- a/royalnet/web/flaskserver.py +++ b/royalnet/web/flaskserver.py @@ -7,16 +7,26 @@ from .royalprint import Royalprint def create_app(config_obj: typing.Type, blueprints: typing.List[Royalprint]): + """Create a :py:class:`flask.Flask` application object. + + Gets the ``app.secret_key`` from the ``SECRET_KEY`` envvar. + + Also requires a ``DB_PATH`` key in ``config_obj`` to initialize the database connection. + + Warning: + The code for this class was written at 1 AM, and I have no clue of how and why it works or even of if it really does work. + Use with caution? + + Args: + config_obj: The object to be passed to :py:meth:`flask.Flask.config.from_object`. + blueprints: A list of blueprints to be registered to the application. + + Returns: + The created :py:class:`flask.Flask`.""" app = f.Flask(__name__) app.config.from_object(config_obj) app.secret_key = os.environ["SECRET_KEY"] - @app.teardown_request - def teardown_alchemy_session(*_, **__): - alchemy_session = app.config["ALCHEMY_SESSION"] - if alchemy_session is not None: - alchemy_session.remove() - # Load blueprints required_tables = set() for blueprint in blueprints: @@ -25,6 +35,7 @@ def create_app(config_obj: typing.Type, blueprints: typing.List[Royalprint]): # Init Alchemy # Seems like a dirty hack to me, but experiments are fun, right? + # WARNING BLACK SORCERY BELOW EDIT AT YOUR OWN RISK if len(required_tables) > 0: alchemy = Alchemy(app.config["DB_PATH"], required_tables) app.config["ALCHEMY"] = alchemy @@ -32,4 +43,12 @@ def create_app(config_obj: typing.Type, blueprints: typing.List[Royalprint]): else: app.config["ALCHEMY"] = None app.config["ALCHEMY_SESSION"] = None + + @app.teardown_request + def teardown_alchemy_session(*_, **__): + alchemy_session = app.config["ALCHEMY_SESSION"] + if alchemy_session is not None: + alchemy_session.remove() + # END OF BLACK SORCERY + return app diff --git a/royalnet/web/royalprint.py b/royalnet/web/royalprint.py index d4b1fb14..719cc823 100644 --- a/royalnet/web/royalprint.py +++ b/royalnet/web/royalprint.py @@ -3,6 +3,8 @@ import flask as f class Royalprint(f.Blueprint): + """An edited :py:class:`flask.Blueprint` containing an additional ``required_tables`` parameter.""" + def __init__(self, name, import_name, static_folder=None, static_url_path=None, template_folder=None, url_prefix=None, subdomain=None, url_defaults=None, diff --git a/royalnet/web/royalprints/__init__.py b/royalnet/web/royalprints/__init__.py new file mode 100644 index 00000000..5511d4ef --- /dev/null +++ b/royalnet/web/royalprints/__init__.py @@ -0,0 +1,7 @@ +"""Some Royalprints that can be used with the Royalnet Flask server.""" + +from .home import rp as rp_home +from .wikiview import rp as rp_wikiview +from .tglogin import rp as rp_tglogin + +__all__ = ["rp_home", "rp_wikiview", "rp_tglogin"] diff --git a/royalnet/web/blueprints/home/__init__.py b/royalnet/web/royalprints/home/__init__.py similarity index 56% rename from royalnet/web/blueprints/home/__init__.py rename to royalnet/web/royalprints/home/__init__.py index c2b72967..e3dcb59d 100644 --- a/royalnet/web/blueprints/home/__init__.py +++ b/royalnet/web/royalprints/home/__init__.py @@ -1,12 +1,13 @@ +"""Homepage :py:class:`royalnet.web.Royalprint` of the Royal Games website.""" import flask as f import os from ... import Royalprint tmpl_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates') -bp = Royalprint("home", __name__, template_folder="templates") +rp = Royalprint("home", __name__, template_folder="templates") -@bp.route("/") +@rp.route("/") def home_index(): return f.render_template("home.html") diff --git a/royalnet/web/blueprints/home/templates/home.html b/royalnet/web/royalprints/home/templates/home.html similarity index 100% rename from royalnet/web/blueprints/home/templates/home.html rename to royalnet/web/royalprints/home/templates/home.html diff --git a/royalnet/web/blueprints/tglogin/__init__.py b/royalnet/web/royalprints/tglogin/__init__.py similarity index 90% rename from royalnet/web/blueprints/tglogin/__init__.py rename to royalnet/web/royalprints/tglogin/__init__.py index 280fc838..46724a84 100644 --- a/royalnet/web/blueprints/tglogin/__init__.py +++ b/royalnet/web/royalprints/tglogin/__init__.py @@ -1,3 +1,4 @@ +"""A Royalnet Telegram login :py:class:`royalnet.web.Royalprint`.""" import flask as f import hashlib import hmac @@ -6,17 +7,17 @@ from ... import Royalprint from ....database.tables import Royal, Telegram -bp = Royalprint("tglogin", __name__, url_prefix="/login/telegram", required_tables={Royal, Telegram}, +rp = Royalprint("tglogin", __name__, url_prefix="/login/telegram", required_tables={Royal, Telegram}, template_folder="templates") -@bp.route("/") +@rp.route("/") def tglogin_index(): f.session.pop("royal", None) return f.render_template("tglogin_index.html") -@bp.route("/done") +@rp.route("/done") def tglogin_done(): alchemy, alchemy_session = f.current_app.config["ALCHEMY"], f.current_app.config["ALCHEMY_SESSION"] data_check_string = "" diff --git a/royalnet/web/blueprints/tglogin/templates/tglogin_index.html b/royalnet/web/royalprints/tglogin/templates/tglogin_index.html similarity index 100% rename from royalnet/web/blueprints/tglogin/templates/tglogin_index.html rename to royalnet/web/royalprints/tglogin/templates/tglogin_index.html diff --git a/royalnet/web/blueprints/tglogin/templates/tglogin_success.html b/royalnet/web/royalprints/tglogin/templates/tglogin_success.html similarity index 100% rename from royalnet/web/blueprints/tglogin/templates/tglogin_success.html rename to royalnet/web/royalprints/tglogin/templates/tglogin_success.html diff --git a/royalnet/web/blueprints/wikiview/__init__.py b/royalnet/web/royalprints/wikiview/__init__.py similarity index 91% rename from royalnet/web/blueprints/wikiview/__init__.py rename to royalnet/web/royalprints/wikiview/__init__.py index 23790f0d..12334100 100644 --- a/royalnet/web/blueprints/wikiview/__init__.py +++ b/royalnet/web/royalprints/wikiview/__init__.py @@ -1,3 +1,5 @@ +"""A Royal Games Wiki viewer :py:class:`royalnet.web.Royalprint`. Doesn't support any kind of edit.""" + import flask as f import markdown2 import re @@ -8,7 +10,7 @@ from ....database.tables import Royal, WikiPage, WikiRevision tmpl_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates') -bp = Royalprint("wikiview", __name__, url_prefix="/wikiview", template_folder=tmpl_dir, +rp = Royalprint("wikiview", __name__, url_prefix="/wikiview", template_folder=tmpl_dir, required_tables={Royal, WikiPage, WikiRevision}) @@ -48,15 +50,15 @@ def prepare_page(page): return "Format not available", 500 -@bp.route("/") +@rp.route("/") def wikiview_index(): alchemy, alchemy_session = f.current_app.config["ALCHEMY"], f.current_app.config["ALCHEMY_SESSION"] pages = sorted(alchemy_session.query(alchemy.WikiPage).all(), key=lambda page: page.title) return f.render_template("wikiview_index.html", pages=pages) -@bp.route("/", defaults={"title": ""}) -@bp.route("//") +@rp.route("/<uuid:page_id>", defaults={"title": ""}) +@rp.route("/<uuid:page_id>/<title>") def wikiview_by_id(page_id: uuid.UUID, title: str): alchemy, alchemy_session = f.current_app.config["ALCHEMY"], f.current_app.config["ALCHEMY_SESSION"] page = alchemy_session.query(alchemy.WikiPage).filter(alchemy.WikiPage.page_id == page_id).one_or_none() diff --git a/royalnet/web/blueprints/wikiview/templates/wikiview_index.html b/royalnet/web/royalprints/wikiview/templates/wikiview_index.html similarity index 100% rename from royalnet/web/blueprints/wikiview/templates/wikiview_index.html rename to royalnet/web/royalprints/wikiview/templates/wikiview_index.html diff --git a/royalnet/web/blueprints/wikiview/templates/wikiview_page.html b/royalnet/web/royalprints/wikiview/templates/wikiview_page.html similarity index 100% rename from royalnet/web/blueprints/wikiview/templates/wikiview_page.html rename to royalnet/web/royalprints/wikiview/templates/wikiview_page.html