-
-
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 @@
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
+-
+
+- 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("/", defaults={"title": ""})
+@rp.route("//")
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
|