- value (royalnet.database.tables.Keyvalue attribute)
+
+ - VideochannelCommand (class in royalnet.commands)
- VideoinfoCommand (class in royalnet.commands)
diff --git a/docs/html/network.html b/docs/html/network.html
index e4a518ef..ab2048f0 100644
--- a/docs/html/network.html
+++ b/docs/html/network.html
@@ -237,7 +237,8 @@
-
exception
royalnet.network. NotIdentifiedError
-
+The royalnet.network.RoyalnetLink has not identified yet to a royalnet.network.RoyalnetServer .
+
-
diff --git a/docs/html/objects.inv b/docs/html/objects.inv
index 4a2407b5..95e902a0 100644
Binary files a/docs/html/objects.inv and b/docs/html/objects.inv differ
diff --git a/docs/html/searchindex.js b/docs/html/searchindex.js
index 5d4d124d..8a6d01a2 100644
--- a/docs/html/searchindex.js
+++ b/docs/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["audio","bots","commands","database","index","network","utils"],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","index.rst","network.rst","utils.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,""],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,""],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,""],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,""]},"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,""],DateparserCommand:[2,1,1,""],DiarioCommand:[2,1,1,""],KvCommand:[2,1,1,""],KvactiveCommand:[2,1,1,""],KvrollCommand:[2,1,1,""],NullCommand:[2,1,1,""],PingCommand:[2,1,1,""],PlayCommand:[2,1,1,""],PlaymodeCommand:[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,""],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,""]},"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.network":{InvalidDestinationEM:[5,1,1,""],InvalidPackageEM:[5,1,1,""],InvalidSecretEM:[5,1,1,""],Message:[5,1,1,""],NetworkError:[5,6,1,""],NotConnectedError:[5,6,1,""],NotIdentifiedError:[5,6,1,""],Package:[5,1,1,""],Reply:[5,1,1,""],RequestError:[5,1,1,""],RequestSuccessful:[5,1,1,""],RoyalnetConfig:[5,1,1,""],RoyalnetLink:[5,1,1,""],RoyalnetServer:[5,1,1,""],ServerErrorMessage:[5,1,1,""]},"royalnet.network.Package":{__init__:[5,2,1,""],pickle:[5,2,1,""],reply:[5,2,1,""]},"royalnet.network.Reply":{raise_on_error:[5,2,1,""]},"royalnet.network.RequestError":{__init__:[5,2,1,""],raise_on_error:[5,2,1,""]},"royalnet.network.RequestSuccessful":{raise_on_error:[5,2,1,""]},"royalnet.network.RoyalnetLink":{connect:[5,2,1,""],identify:[5,2,1,""],receive:[5,2,1,""],request:[5,2,1,""],run:[5,2,1,""],send:[5,2,1,""]},"royalnet.network.RoyalnetServer":{find_client:[5,2,1,""],find_destination:[5,2,1,""],listener:[5,2,1,""],route_package:[5,2,1,""],serve:[5,2,1,""],start:[5,2,1,""]},"royalnet.utils":{Call:[6,1,1,""],Command:[6,1,1,""],CommandArgs:[6,1,1,""],NetworkHandler:[6,1,1,""],asyncify:[6,5,1,""],cdj:[6,5,1,""],plusformat:[6,5,1,""],safefilename:[6,5,1,""],safeformat:[6,5,1,""],sleep_until:[6,5,1,""]},"royalnet.utils.Call":{alchemy:[6,4,1,""],get_author:[6,2,1,""],interface_name:[6,4,1,""],interface_obj:[6,4,1,""],interface_prefix:[6,4,1,""],net_request:[6,2,1,""],reply:[6,2,1,""],run:[6,2,1,""],session_end:[6,2,1,""],session_init:[6,2,1,""]},"royalnet.utils.Command":{command_description:[6,4,1,""],command_name:[6,4,1,""],command_syntax:[6,4,1,""],common:[6,7,1,""],network_handler_dict:[6,7,1,""],network_handlers:[6,4,1,""],require_alchemy_tables:[6,4,1,""]},"royalnet.utils.CommandArgs":{joined:[6,2,1,""],match:[6,2,1,""],optional:[6,2,1,""]},"royalnet.utils.NetworkHandler":{message_type:[6,4,1,""]},royalnet:{audio:[0,0,0,"-"],bots:[1,0,0,"-"],commands:[2,0,0,"-"],database:[3,0,0,"-"],network:[5,0,0,"-"],utils:[6,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:{"0x7a70198":3,"0x7a701e0":3,"0x7a70300":3,"0x7a70348":3,"0x7a70978":3,"0x7a709c0":3,"0x7a70a08":3,"0x7a70b70":3,"20m":0,"48khz":0,"abstract":6,"boolean":3,"byte":[0,5],"class":[0,1,2,3,5,6],"default":[0,3,6],"float":0,"function":[0,6],"int":[0,5,6],"new":[0,3,6],"null":[1,5],"return":[0,1,5,6],"static":0,"true":[0,3,6],"try":[1,6],"while":[0,1,3],Not:0,That:6,The:[0,1,3,5,6],Then:1,Use:3,__init__:[0,3,5],_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,_stop_download:0,_windowsselectoreventloop:5,about:0,abstracteventloop:5,activekvgroup:3,add:[0,1],add_to_music_data:1,address:5,advanc:0,advance_music_data:1,akin:5,alchemi:[1,3,6],alia:3,all:0,allow:3,alreadi:0,also:[0,5],altern:5,alwai:[1,5],amount:0,ani:[0,6],anoth:5,answer:6,anystr:6,arg:[5,6],argument:[0,6],around:[0,3],async:[0,3],asyncifi:6,asyncio:[1,5],asyncron:3,attribut:6,audio:[1,4],audio_filenam:0,audio_sourc:1,audiosourc:0,author:6,authorcommand:2,avatar:3,avatar_hash:3,base:[0,1],been:0,bestaudio:0,biginteg:3,bit:0,block:1,bool:6,bot:[3,4],botfather_command_str:1,both:3,call:[1,6],callabl:6,can:5,caus:5,cdj:6,chain:1,chang:[0,1],change_pres:1,channel:[1,6],chat:1,check:[0,3],ciaoruozicommand:2,class_:6,classmethod:6,clean:6,client:1,close:5,colorcommand:2,column:3,columndefault:3,command:[1,4,6],command_arg:6,command_descript:6,command_nam:[1,6],command_prefix:1,command_syntax:6,commandarg:6,common:6,commun:5,compat:0,complet:0,compon:3,configur:[1,3],connect:[1,5],connectedcli:5,contain:[0,5],context:3,convers:5,convert:0,core:3,coroutin:1,correspond:[0,1],creat:[0,1,3,5,6],create_from_url:0,create_from_ytsearch:0,creator:3,creator_id:3,ct_co:3,current:1,custom:[0,1],data:[0,5,6],databas:[1,4,6],database_config:1,database_uri:3,databaseconfig:[1,3],dateparsercommand:2,datetim:[3,6],debug:5,declar:3,delet:0,delete_audio_fil:0,delete_video_fil:0,describ:3,destin:[5,6],destination_conv_id:5,detail:3,diario:3,diario_id:3,diariocommand:2,dict:[0,6],dictionari:1,discord:[0,1,3],discord_config:1,discord_id:3,discordbot:1,discordcli:1,discordconfig:1,discrimin:3,doc:3,doe:[0,5,6],doesn:1,download:0,dure:1,each:0,either:0,empti:[0,1],encod:0,end:3,ending_class:3,engin:3,error:5,error_command:1,error_if_non:6,error_msg:5,event:5,everi:[0,5],exc:5,except:[1,5],execut:[1,5],exist:[1,6],ext:0,extra:0,extract:0,extract_info:0,factori:0,fals:[0,3,5,6],file:[0,1],find:[1,3,5,6],find_client:5,find_destin:5,first:0,first_nam:3,follow:3,foreignkei:3,form:5,format:0,found:[5,6],frame:0,from:[0,1,3,6],full_usernam:3,gener:[0,1,6],genericbot:[1,3],get:[0,3],get_author:6,going:0,group:3,group_nam:3,guild:1,handl:1,has:0,have:1,html:3,http:3,identifi:[5,6],identity_column_nam:3,identity_t:[1,3],ignore_escap:6,implement:0,incom:1,incorrect:5,index:[4,6],inf:0,infinit:0,info:0,inherit:[0,1],initi:[0,1],insid:0,instanc:1,instead:0,integ:3,interface_nam:[1,6],interface_obj:6,interface_prefix:6,invalid:5,invaliddestinationem:5,invalidinputerror:6,invalidpackageem:5,invalidsecretem:5,is_opu:0,item:0,join:6,just:1,keep:0,kei:3,keygroup:3,keyvalu:3,kvactivecommand:2,kvcommand:2,kvrollcommand:2,kwarg:[1,6],largebinari:3,last_nam:3,least:0,left:0,like:0,link:[1,5],link_typ:5,list:[0,1,5,6],listen:[1,5],logger:0,login:1,loop:5,made:6,mai:0,maintain:3,make:1,manag:3,master_secret:5,master_t:[1,3],master_uri:5,match:[1,6],math:0,mean:6,media_url:3,memori:0,mention:3,messag:[1,5,6],message_typ:6,method:0,missing_command:1,modul:4,more:[1,3],multipl:[1,3],music_data:1,must:[0,5,6],name:[0,1],need:1,net_request:6,network:[1,4,6],network_handl:[1,6],network_handler_dict:6,networkerror:5,networkhandl:6,next:[0,1],nid:5,no_warn:0,nobodi:5,node:5,none:[0,1,3,5,6],noplaylist:0,notconnectederror:5,noth:5,notidentifiederror:5,notimpl:[1,6],now_plai:0,nullabl:3,nullcommand:[1,2],number:[0,5],object:[0,1,3],offset:1,onc:[0,3],option:[0,1,3,6],opu:0,order:0,org:3,other:1,otherwis:[0,1,5],outtmpl:0,packag:5,packet:5,page:4,paramet:[0,1,3,5],pass:0,password:3,path:3,pattern:6,pcm:0,per:0,perman:0,pickl:5,pickleabl:6,pingcommand:2,plai:[0,1],playcommand:2,playlist:0,playmod:0,playmodecommand:2,plusformat:6,pool:0,port:5,presenc:1,primary_kei:3,probabl:[0,6],properti:0,quiet:0,quot:3,quoted_account:3,quoted_account_id:3,ragecommand:2,rais:[1,5,6],raise_on_error:5,random:0,read:0,reason:5,receiv:[1,5,6],recommend:0,relationshiplinkchain:3,relationshipproperti:3,remindercommand:2,remov:0,repeat:0,repli:[5,6],repres:[0,1],request:[1,5,6],request_handl:5,request_uri:5,requesterror:5,requestsuccess:5,requir:1,require_alchemy_t:6,require_at_least:6,required_secret:5,rest:6,role:3,rout:5,route_packag:5,row:6,royal:3,royal_id:3,royalnet_config:1,royalnetconfig:[1,5],royalneterror:5,royalnetlink:[1,5],royalnetserv:5,royalpcmaudio:[0,1],royalpcmfil:0,rpf:0,run:[1,5,6],safefilenam:6,safeformat:6,search:[0,4],secret:5,select:[0,3],self:1,send:[5,6],sent:[5,6],sequenc:[5,6],serv:5,server:5,servererrormessag:5,session_acm:3,session_cm:3,session_end:6,session_init:6,set:[1,3,6],shipcommand:2,should:[1,5,6],signal:0,singl:[1,3],skipcommand:2,sleep_until:6,smecdscommand:2,someth:5,somewher:5,song:[0,1],soon:0,sourc:[0,5,6],source_conv_id:5,specif:[1,6],specifi:1,spoiler:3,sqlalchemi:3,start:[1,3,5],starting_class:3,starting_list:0,starting_pool:0,statement:3,statu:1,stereo:0,still:6,str:[0,1,3,5,6],string:[0,3,6],subbot:6,subclass:0,submodul:3,success:5,summoncommand:2,synccommand:2,tabl:1,task:1,telegram:[1,3],telegram_config:1,telegrambot:1,telegramcal:1,telegramconfig:1,termin:5,text:[3,6],tg_id:3,them:3,thi:[0,5,6],those:0,through:5,time:5,timestamp:3,titl:0,token:1,tupl:3,type:[0,1,3,5,6],uid:3,union:0,univers:6,unregisterederror:6,until:0,updat:1,update_activity_with_source_titl:1,uri:3,url:0,use:[0,3],used:[1,3],useful:0,user:6,usernam:3,using:1,usual:[0,5],util:[1,4],valu:[0,3,5],variabl:1,veri:0,video:0,videoinfocommand:2,videos_left:0,voic:1,wai:0,wait:6,want:0,warn:0,wasn:5,websocket:5,websocketserverprotocol:5,went:5,when:6,which:[0,5],word:6,worth:0,wrapper:[0,3],wrong:5,yield:0,you:0,youtub:0,youtube_dl:0,youtubedl:0,ytdl_arg:0,ytdl_filenam:0,ytdlfile:0,ytdlinfo:0},titles:["royalnet.audio","royalnet.bots","royalnet.commands","royalnet.database","royalnet","royalnet.network","royalnet.utils"],titleterms:{audio:0,bot:1,command:2,databas:3,indic:4,network:5,royalnet:[0,1,2,3,4,5,6],tabl:[3,4],util:6}})
\ No newline at end of file
+Search.setIndex({docnames:["audio","bots","commands","database","index","network","utils"],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","index.rst","network.rst","utils.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,""],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,""],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,""],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,""]},"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,""],DateparserCommand:[2,1,1,""],DiarioCommand:[2,1,1,""],KvCommand:[2,1,1,""],KvactiveCommand:[2,1,1,""],KvrollCommand:[2,1,1,""],NullCommand:[2,1,1,""],PingCommand:[2,1,1,""],PlayCommand:[2,1,1,""],PlaymodeCommand:[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,""]},"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.network":{InvalidDestinationEM:[5,1,1,""],InvalidPackageEM:[5,1,1,""],InvalidSecretEM:[5,1,1,""],Message:[5,1,1,""],NetworkError:[5,6,1,""],NotConnectedError:[5,6,1,""],NotIdentifiedError:[5,6,1,""],Package:[5,1,1,""],Reply:[5,1,1,""],RequestError:[5,1,1,""],RequestSuccessful:[5,1,1,""],RoyalnetConfig:[5,1,1,""],RoyalnetLink:[5,1,1,""],RoyalnetServer:[5,1,1,""],ServerErrorMessage:[5,1,1,""]},"royalnet.network.Package":{__init__:[5,2,1,""],pickle:[5,2,1,""],reply:[5,2,1,""]},"royalnet.network.Reply":{raise_on_error:[5,2,1,""]},"royalnet.network.RequestError":{__init__:[5,2,1,""],raise_on_error:[5,2,1,""]},"royalnet.network.RequestSuccessful":{raise_on_error:[5,2,1,""]},"royalnet.network.RoyalnetLink":{connect:[5,2,1,""],identify:[5,2,1,""],receive:[5,2,1,""],request:[5,2,1,""],run:[5,2,1,""],send:[5,2,1,""]},"royalnet.network.RoyalnetServer":{find_client:[5,2,1,""],find_destination:[5,2,1,""],listener:[5,2,1,""],route_package:[5,2,1,""],serve:[5,2,1,""],start:[5,2,1,""]},"royalnet.utils":{Call:[6,1,1,""],Command:[6,1,1,""],CommandArgs:[6,1,1,""],NetworkHandler:[6,1,1,""],asyncify:[6,5,1,""],cdj:[6,5,1,""],plusformat:[6,5,1,""],safefilename:[6,5,1,""],safeformat:[6,5,1,""],sleep_until:[6,5,1,""]},"royalnet.utils.Call":{alchemy:[6,4,1,""],get_author:[6,2,1,""],interface_name:[6,4,1,""],interface_obj:[6,4,1,""],interface_prefix:[6,4,1,""],net_request:[6,2,1,""],reply:[6,2,1,""],run:[6,2,1,""],session_end:[6,2,1,""],session_init:[6,2,1,""]},"royalnet.utils.Command":{command_description:[6,4,1,""],command_name:[6,4,1,""],command_syntax:[6,4,1,""],common:[6,7,1,""],network_handler_dict:[6,7,1,""],network_handlers:[6,4,1,""],require_alchemy_tables:[6,4,1,""]},"royalnet.utils.CommandArgs":{joined:[6,2,1,""],match:[6,2,1,""],optional:[6,2,1,""]},"royalnet.utils.NetworkHandler":{message_type:[6,4,1,""]},royalnet:{audio:[0,0,0,"-"],bots:[1,0,0,"-"],commands:[2,0,0,"-"],database:[3,0,0,"-"],network:[5,0,0,"-"],utils:[6,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:{"0x73b80c0":3,"0x73b8198":3,"0x73b84b0":3,"0x73b84f8":3,"0x73b8930":3,"0x73b8b28":3,"0x73b8df8":3,"20m":0,"48khz":0,"abstract":6,"boolean":3,"byte":[0,5],"class":[0,1,2,3,5,6],"default":[0,3,6],"float":0,"function":[0,6],"int":[0,5,6],"new":[0,3,6],"null":[1,5],"return":[0,1,5,6],"static":0,"true":[0,3,6],"try":[1,6],"while":[0,1,3],Not:0,That:6,The:[0,1,3,5,6],Then:1,Use:3,__init__:[0,3,5],_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,_stop_download:0,_windowsselectoreventloop:5,about:0,abstracteventloop:5,accur:6,activekvgroup:3,add:[0,1],add_to_music_data:1,adding:6,address:5,advanc:0,advance_music_data:1,akin:5,alchemi:[1,3,6],alia:3,all:[0,6],allow:3,alreadi:0,also:[0,5],altern:5,alwai:[1,5],amount:0,ani:[0,6],anoth:[1,5],answer:6,anystr:6,arg:[5,6],argument:[0,6],around:[0,3],async:[0,3],asyncifi:6,asyncio:[1,5],asyncron:3,attribut:6,audio:[1,4],audio_filenam:0,audio_sourc:1,audiosourc:0,author:6,authorcommand:2,avatar:3,avatar_hash:3,base:[0,1],been:0,bestaudio:0,biginteg:3,bit:0,block:[1,6],bool:6,bot:[3,4],botfather_command_str:1,both:3,call:[1,6],callabl:6,can:[5,6],caus:5,cdj:6,chain:1,chang:[0,1],change_pres:1,channel:[1,6],charact:6,chat:1,check:[0,3],ciaoruozicommand:2,class_:6,classmethod:6,clean:6,client:1,close:5,colorcommand:2,column:3,columndefault:3,command:[1,4,6],command_arg:6,command_descript:6,command_nam:[1,6],command_prefix:1,command_syntax:6,commandarg:6,common:6,commun:5,compat:0,complet:0,compon:3,configur:[1,3],connect:[1,5],connectedcli:5,contain:[0,5],context:3,convers:5,convert:[0,6],core:3,coroutin:1,correspond:[0,1],creat:[0,1,3,5,6],create_from_url:0,create_from_ytsearch:0,creator:3,creator_id:3,ct_co:3,current:1,custom:[0,1],data:[0,5,6],databas:[1,4,6],database_config:1,database_uri:3,databaseconfig:[1,3],dateparsercommand:2,datetim:[3,6],debug:5,declar:3,delet:0,delete_audio_fil:0,delete_video_fil:0,describ:3,destin:[5,6],destination_conv_id:5,detail:3,diario:3,diario_id:3,diariocommand:2,dict:[0,6],dictionari:1,discord:[0,1,3],discord_config:1,discord_id:3,discordbot:1,discordcli:1,discordconfig:1,discrimin:3,doc:3,doe:[0,5,6],doesn:1,download:0,dure:1,each:0,either:0,empti:[0,1],encod:0,end:3,ending_class:3,engin:3,ensur:6,error:5,error_command:1,error_if_non:6,error_msg:5,event:5,everi:[0,5],exc:5,except:[1,5],execut:[1,5],exist:[1,6],ext:0,extra:0,extract:0,extract_info:0,factori:0,fals:[0,3,5,6],file:[0,1],filenam:6,find:[1,3,5,6],find_client:5,find_destin:5,first:0,first_nam:3,follow:3,foreignkei:3,form:5,format:0,found:[5,6],frame:0,from:[0,1,3,6],full_usernam:3,gener:[0,1,6],genericbot:[1,3],get:[0,3],get_author:6,going:0,greater:6,group:3,group_nam:3,guild:1,handl:1,has:[0,5],have:1,html:3,http:3,identifi:[5,6],identity_column_nam:3,identity_t:[1,3],ignore_escap:6,implement:0,incom:1,incorrect:5,index:[4,6],inf:0,infinit:0,info:0,inherit:[0,1],initi:[0,1],insid:0,instanc:1,instead:0,integ:3,interface_nam:[1,6],interface_obj:6,interface_prefix:6,invalid:5,invaliddestinationem:5,invalidinputerror:6,invalidpackageem:5,invalidsecretem:5,is_opu:0,item:0,join:6,just:1,keep:0,kei:3,keygroup:3,keyvalu:3,kvactivecommand:2,kvcommand:2,kvrollcommand:2,kwarg:[1,6],largebinari:3,last_nam:3,least:0,left:0,like:0,link:[1,5],link_typ:5,list:[0,1,5,6],listen:[1,5],logger:0,login:1,loop:5,made:6,mai:0,maintain:3,make:1,manag:3,master_secret:5,master_t:[1,3],master_uri:5,match:[1,6],math:0,mean:6,media_url:3,memori:0,mention:3,messag:[1,5,6],message_typ:6,method:0,missing_command:1,modul:4,more:[1,3],multipl:[1,3],music_data:1,must:[0,5,6],name:[0,1],need:1,net_request:6,network:[1,4,6],network_handl:[1,6],network_handler_dict:6,networkerror:5,networkhandl:6,next:[0,1],nid:5,no_warn:0,nobodi:5,node:5,non:6,none:[0,1,3,5,6],noplaylist:0,notconnectederror:5,noth:5,notidentifiederror:5,notimpl:[1,6],now_plai:0,nullabl:3,nullcommand:[1,2],number:[0,5],object:[0,1,3],offset:1,onc:[0,3],onli:6,option:[0,1,3,6],opu:0,order:0,org:3,other:1,otherwis:[0,1,5],outtmpl:0,packag:5,packet:5,page:4,paramet:[0,1,3,5,6],pass:0,password:3,path:3,pattern:6,pcm:0,per:0,perman:0,pickl:5,pickleabl:6,pingcommand:2,plai:[0,1],playcommand:2,playlist:0,playmod:0,playmodecommand:2,plu:6,plusformat:6,pool:0,port:5,presenc:1,primary_kei:3,probabl:[0,6],properti:0,quiet:0,quot:3,quoted_account:3,quoted_account_id:3,ragecommand:2,rais:[1,5,6],raise_on_error:5,random:0,read:0,reason:5,receiv:[1,5,6],recommend:0,relationshiplinkchain:3,relationshipproperti:3,remindercommand:2,remov:0,repeat:0,replac:6,repli:[1,5,6],repres:[0,1],request:[1,5,6],request_handl:5,request_uri:5,requesterror:5,requestsuccess:5,requir:1,require_alchemy_t:6,require_at_least:6,required_secret:5,rest:6,result:6,role:3,rout:5,route_packag:5,row:6,royal:3,royal_id:3,royalnet_config:1,royalnetconfig:[1,5],royalneterror:5,royalnetlink:[1,5],royalnetserv:5,royalpcmaudio:[0,1],royalpcmfil:0,rpf:0,run:[1,5,6],safefilenam:6,safeformat:6,search:[0,4],second:6,secret:5,select:[0,3],self:1,send:[5,6],sent:[1,5,6],sequenc:[5,6],serv:5,server:5,servererrormessag:5,session_acm:3,session_cm:3,session_end:6,session_init:6,set:[1,3,6],shipcommand:2,should:[1,5,6],signal:0,singl:[1,3],skipcommand:2,sleep_until:6,smecdscommand:2,someth:5,somewher:5,song:[0,1],soon:0,sourc:[0,5,6],source_conv_id:5,specif:[1,6],specifi:[1,6],spoiler:3,sqlalchemi:3,start:[1,3,5],starting_class:3,starting_list:0,starting_pool:0,statement:3,statu:1,stereo:0,still:6,str:[0,1,3,5,6],string:[0,3,6],subbot:6,subclass:0,submodul:3,success:5,summoncommand:2,synccommand:2,tabl:1,task:1,telegram:[1,3],telegram_config:1,telegrambot:1,telegramcal:1,telegramconfig:1,termin:5,text:[3,6],tg_id:3,than:6,thei:6,them:3,thi:[0,5,6],those:0,through:5,time:5,timestamp:3,titl:0,token:1,tupl:3,type:[0,1,3,5,6],uid:3,underscor:6,union:0,univers:6,unregisterederror:6,until:[0,6],updat:1,update_activity_with_source_titl:1,uri:3,url:0,use:[0,3],used:[1,3,6],useful:0,user:6,usernam:3,using:1,usual:[0,5],util:[1,4],valu:[0,3,5],variabl:1,veri:0,video:0,videochannelcommand:2,videoinfocommand:2,videos_left:0,voic:1,wai:0,wait:6,want:0,warn:0,wasn:5,websocket:5,websocketserverprotocol:5,went:5,when:6,which:[0,5],word:6,worth:0,wrapper:[0,3],wrong:5,yet:5,yield:0,you:0,youtub:0,youtube_dl:0,youtubedl:0,ytdl_arg:0,ytdl_filenam:0,ytdlfile:0,ytdlinfo:0},titles:["royalnet.audio","royalnet.bots","royalnet.commands","royalnet.database","royalnet","royalnet.network","royalnet.utils"],titleterms:{audio:0,bot:1,command:2,databas:3,indic:4,network:5,royalnet:[0,1,2,3,4,5,6],tabl:[3,4],util:6}})
\ No newline at end of file
diff --git a/docs/html/utils.html b/docs/html/utils.html
index 383725fe..18ffdf40 100644
--- a/docs/html/utils.html
+++ b/docs/html/utils.html
@@ -277,18 +277,32 @@ The data must be pickleable.
-
-
royalnet.utils. sleep_until (dt: datetime.datetime)
-
+royalnet.utils. sleep_until (dt: datetime.datetime) → None
+Block the call until the specified datetime.
+
+ Warning
+ Accurate only to seconds.
+
+
-
royalnet.utils. plusformat (i: int) → str
-
+Convert an int to a string, adding a plus if they are greater than 0.
+
+- Parameters
+i – the int to convert
+
+- Returns
+The resulting str
+
+
+
-
class
royalnet.utils. CommandArgs
-The arguments of a command. Raises InvalidInputError if the requested argument does not exist.
+The arguments of a command. Raises InvalidInputError if the requested argument does not exist.
-
joined (*, require_at_least=0)
@@ -320,7 +334,8 @@ The data must be pickleable.
-
royalnet.utils. safefilename (string: str)
-
+Ensure a string can be used as a filename by replacing all non-word characters with underscores.
+
diff --git a/royalnet/__init__.py b/royalnet/__init__.py
index 77d348d3..5f091505 100644
--- a/royalnet/__init__.py
+++ b/royalnet/__init__.py
@@ -1,3 +1,3 @@
-from . import audio, bots, commands, database, network, utils
+from . import audio, bots, commands, database, network, utils, error
-__all__ = ["audio", "bots", "commands", "database", "network", "utils"]
+__all__ = ["audio", "bots", "commands", "database", "network", "utils", "error"]
diff --git a/royalnet/network/royalnetlink.py b/royalnet/network/royalnetlink.py
index 2b6c2479..5edab494 100644
--- a/royalnet/network/royalnetlink.py
+++ b/royalnet/network/royalnetlink.py
@@ -17,7 +17,7 @@ class NotConnectedError(Exception):
class NotIdentifiedError(Exception):
- pass
+ """The :py:class:`royalnet.network.RoyalnetLink` has not identified yet to a :py:class:`royalnet.network.RoyalnetServer`."""
class NetworkError(Exception):
diff --git a/royalnet/utils/commandargs.py b/royalnet/utils/commandargs.py
index 63a02b2f..46b40432 100644
--- a/royalnet/utils/commandargs.py
+++ b/royalnet/utils/commandargs.py
@@ -4,7 +4,7 @@ from royalnet.error import InvalidInputError
class CommandArgs(list):
- """The arguments of a command. Raises InvalidInputError if the requested argument does not exist."""
+ """The arguments of a command. Raises :py:exc:`InvalidInputError` if the requested argument does not exist."""
def __getitem__(self, item):
if isinstance(item, int):
diff --git a/royalnet/utils/plusformat.py b/royalnet/utils/plusformat.py
index ef5ba0b9..7c14627f 100644
--- a/royalnet/utils/plusformat.py
+++ b/royalnet/utils/plusformat.py
@@ -1,4 +1,11 @@
def plusformat(i: int) -> str:
+ """Convert an :py:class:`int` to a string, adding a plus if they are greater than 0.
+
+ Parameters:
+ i: the :py:class:`int` to convert
+
+ Returns:
+ The resulting :py:class:`str`"""
if i >= 0:
return f"+{i}"
return str(i)
diff --git a/royalnet/utils/safefilename.py b/royalnet/utils/safefilename.py
index 3f6d8e2f..da3e78e7 100644
--- a/royalnet/utils/safefilename.py
+++ b/royalnet/utils/safefilename.py
@@ -2,4 +2,5 @@ import re
def safefilename(string: str):
+ """Ensure a string can be used as a filename by replacing all non-word characters with underscores."""
return re.sub(r"\W", "_", string)
diff --git a/royalnet/utils/sleepuntil.py b/royalnet/utils/sleepuntil.py
index 7b6189cb..63d08ed0 100644
--- a/royalnet/utils/sleepuntil.py
+++ b/royalnet/utils/sleepuntil.py
@@ -2,7 +2,11 @@ import asyncio
import datetime
-async def sleep_until(dt: datetime.datetime):
+async def sleep_until(dt: datetime.datetime) -> None:
+ """Block the call until the specified datetime.
+
+ Warning:
+ Accurate only to seconds."""
now = datetime.datetime.now()
if now > dt:
return
|