mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-27 13:34:28 +00:00
Delete old commands
This commit is contained in:
parent
11b808e778
commit
e7b98880e0
14 changed files with 0 additions and 438 deletions
|
@ -1,19 +0,0 @@
|
|||
from ..utils import Command, Call
|
||||
from ..database.tables import Royal, Telegram, Discord
|
||||
|
||||
|
||||
class AuthorCommand(Command):
|
||||
|
||||
command_name = "author"
|
||||
command_description = "Ottieni informazioni sull'autore di questa chiamata."
|
||||
command_syntax = ""
|
||||
|
||||
require_alchemy_tables = {Royal, Telegram, Discord}
|
||||
|
||||
@classmethod
|
||||
async def common(cls, call: Call):
|
||||
author = await call.get_author()
|
||||
if author is None:
|
||||
await call.reply(f"☁️ L'autore di questa chiamata è sconosciuto.")
|
||||
return
|
||||
await call.reply(f"🌞 {str(author)} è l'autore di questa chiamata.")
|
|
@ -1,19 +0,0 @@
|
|||
import datetime
|
||||
import dateparser
|
||||
from ..utils import Command, Call
|
||||
|
||||
|
||||
class DateparserCommand(Command):
|
||||
|
||||
command_name = "dateparser"
|
||||
command_description = "Legge e comprende la data inserita."
|
||||
command_syntax = "(data)"
|
||||
|
||||
@classmethod
|
||||
async def common(cls, call: Call):
|
||||
text = call.args.joined(require_at_least=1)
|
||||
date: datetime.datetime = dateparser.parse(text)
|
||||
if date is None:
|
||||
await call.reply("🕕 La data inserita non è valida.")
|
||||
return
|
||||
await call.reply(f"🕐 La data inserita è {date.strftime('%Y-%m-%d %H:%M:%S')}")
|
|
@ -1,20 +0,0 @@
|
|||
from ..utils import Command, Call, asyncify
|
||||
from ..database.tables import Royal, Alias
|
||||
|
||||
|
||||
class DebugCreateCommand(Command):
|
||||
|
||||
command_name = "debug_create"
|
||||
command_description = "Crea un nuovo account Royalnet"
|
||||
command_syntax = "(newusername)"
|
||||
|
||||
require_alchemy_tables = {Royal, Alias}
|
||||
|
||||
@classmethod
|
||||
async def common(cls, call: Call):
|
||||
royal = call.alchemy.Royal(username=call.args[0], role="Member")
|
||||
call.session.add(royal)
|
||||
alias = call.alchemy.Alias(royal=royal, alias=royal.username.lower())
|
||||
call.session.add(alias)
|
||||
await asyncify(call.session.commit)
|
||||
await call.reply(f"✅ Utente {royal} creato!")
|
|
@ -1,55 +0,0 @@
|
|||
import logging as _logging
|
||||
from ..utils import Command, Call
|
||||
from ..error import *
|
||||
|
||||
log = _logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ErrorHandlerCommand(Command):
|
||||
|
||||
command_name = "error_handler"
|
||||
command_description = "Gestisce gli errori causati dagli altri comandi."
|
||||
command_syntax = ""
|
||||
|
||||
@classmethod
|
||||
async def common(cls, call: Call):
|
||||
exception: Exception = call.kwargs["exception"]
|
||||
if isinstance(exception, NoneFoundError):
|
||||
await call.reply(f"⚠️ L'elemento richiesto non è stato trovato.\n[p]{exception}[/p]")
|
||||
return
|
||||
elif isinstance(exception, TooManyFoundError):
|
||||
await call.reply(f"⚠️ La richiesta effettuata è ambigua, pertanto è stata annullata.\n[p]{exception}[/p]")
|
||||
return
|
||||
elif isinstance(exception, UnregisteredError):
|
||||
await call.reply("⚠️ Devi essere registrato a Royalnet per usare questo comando.\nUsa il comando [c]sync[/c] per registrarti!")
|
||||
return
|
||||
elif isinstance(exception, UnsupportedError):
|
||||
await call.reply(f"⚠️ Il comando richiesto non è disponibile tramite l'interfaccia [c]{call.interface_name}[/c].")
|
||||
return
|
||||
elif isinstance(exception, InvalidInputError):
|
||||
command = call.kwargs["previous_command"]
|
||||
await call.reply(f"⚠️ Sintassi non valida.\nSintassi corretta: [c]{call.interface_prefix}{command.command_name} {command.command_syntax}[/c]")
|
||||
return
|
||||
elif isinstance(exception, InvalidConfigError):
|
||||
await call.reply(f"⚠️ Il bot non è stato configurato correttamente, quindi questo comando non può essere eseguito.\n[p]{exception}[/p]")
|
||||
return
|
||||
elif isinstance(exception, RoyalnetRequestError):
|
||||
await call.reply(f"⚠️ La richiesta a Royalnet ha restituito un errore:\n"
|
||||
f"[p]{exception.error.extra_info['type']}\n"
|
||||
f"{exception.error.extra_info['str']}[/p]")
|
||||
return
|
||||
elif isinstance(exception, ExternalError):
|
||||
await call.reply(f"⚠️ Una risorsa esterna necessaria per l'esecuzione del comando non ha funzionato correttamente, quindi il comando è stato annullato.\n[p]{exception}[/p]")
|
||||
return
|
||||
elif isinstance(exception, RoyalnetResponseError):
|
||||
log.warning(f"Invalid response from Royalnet - {exception.__class__.__name__}: {exception}")
|
||||
await call.reply(f"❌ La risposta ricevuta da Royalnet non è valida: [p]{exception}[/p]")
|
||||
return
|
||||
elif isinstance(exception, CurrentlyDisabledError):
|
||||
await call.reply(f"⚠️ Il comando richiesto è temporaneamente disabilitato.\n[p]{exception}[/p]")
|
||||
return
|
||||
elif __debug__:
|
||||
raise
|
||||
else:
|
||||
log.error(f"Unhandled exception - {exception.__class__.__name__}: {exception}")
|
||||
await call.reply(f"❌ Eccezione non gestita durante l'esecuzione del comando:\n[b]{exception.__class__.__name__}[/b]\n[p]{exception}[/p]")
|
|
@ -1,26 +0,0 @@
|
|||
import telegram
|
||||
import discord
|
||||
import typing
|
||||
from ..utils import Command, Call
|
||||
|
||||
|
||||
class IdCommand(Command):
|
||||
|
||||
command_name = "id"
|
||||
command_description = "Visualizza l'id della chat attuale."
|
||||
command_syntax = ""
|
||||
|
||||
@classmethod
|
||||
async def telegram(cls, call: Call):
|
||||
chat: telegram.Chat = call.channel
|
||||
await call.reply(f"🔢 L'id di questa chat è [b]{chat.id}[/b].")
|
||||
|
||||
@classmethod
|
||||
async def discord(cls, call: Call):
|
||||
channel = call.channel
|
||||
if isinstance(channel, discord.TextChannel):
|
||||
await call.reply(f"🔢 L'id di questa chat è [b]{channel.id}[/b].")
|
||||
elif isinstance(channel, discord.DMChannel):
|
||||
await call.reply(f"🔢 L'id di questa chat è [b]{channel.id}[/b].")
|
||||
else:
|
||||
await call.reply(f"⚠️ Questo tipo di chat non è supportato.")
|
|
@ -1,37 +0,0 @@
|
|||
from ..database.tables import ActiveKvGroup, Royal, Keyvalue, Keygroup
|
||||
from ..utils import Command, Call, asyncify
|
||||
|
||||
|
||||
class KvCommand(Command):
|
||||
|
||||
command_name = "kv"
|
||||
command_description = "Visualizza o modifica un valore kv."
|
||||
command_syntax = "(chiave) [valore]"
|
||||
|
||||
require_alchemy_tables = {ActiveKvGroup, Royal, Keyvalue, Keygroup}
|
||||
|
||||
@classmethod
|
||||
async def common(cls, call: Call):
|
||||
key = call.args[0].lower()
|
||||
value = call.args.optional(1)
|
||||
author = await call.get_author(error_if_none=True)
|
||||
active = await asyncify(call.session.query(call.alchemy.ActiveKvGroup).filter_by(royal=author).one_or_none)
|
||||
if active is None:
|
||||
await call.reply("⚠️ Devi prima attivare un gruppo con il comando [c]kvactive[/c]!")
|
||||
return
|
||||
keyvalue = await asyncify(call.session.query(call.alchemy.Keyvalue).filter_by(group=active.group, key=key).one_or_none)
|
||||
if value is None:
|
||||
# Get
|
||||
if keyvalue is None:
|
||||
await call.reply("⚠️ La chiave specificata non esiste.")
|
||||
return
|
||||
await call.reply(f"ℹ️ Valore della chiave:\n{keyvalue}")
|
||||
else:
|
||||
# Set/kv asdf 1000
|
||||
if keyvalue is None:
|
||||
keyvalue = call.alchemy.Keyvalue(group=active.group, key=key, value=value)
|
||||
call.session.add(keyvalue)
|
||||
else:
|
||||
keyvalue.value = value
|
||||
await asyncify(call.session.commit)
|
||||
await call.reply(f"✅ Chiave aggiornata:\n{keyvalue}")
|
|
@ -1,32 +0,0 @@
|
|||
from ..database.tables import ActiveKvGroup, Royal, Keygroup
|
||||
from ..utils import Command, Call, asyncify
|
||||
|
||||
|
||||
class KvactiveCommand(Command):
|
||||
|
||||
command_name = "kvactive"
|
||||
command_description = "Seleziona un gruppo di valori kv."
|
||||
command_syntax = "(nomegruppo)"
|
||||
|
||||
require_alchemy_tables = {ActiveKvGroup, Royal, Keygroup}
|
||||
|
||||
@classmethod
|
||||
async def common(cls, call: Call):
|
||||
group_name = call.args[0].lower()
|
||||
author = await call.get_author(error_if_none=True)
|
||||
active = await asyncify(call.session.query(call.alchemy.ActiveKvGroup).filter_by(royal=author).one_or_none)
|
||||
if active is None:
|
||||
group = await asyncify(call.session.query(call.alchemy.Keygroup).filter_by(group_name=group_name).one_or_none)
|
||||
if group is None:
|
||||
group = call.alchemy.Keygroup(group_name=group_name)
|
||||
call.session.add(group)
|
||||
active = call.alchemy.ActiveKvGroup(royal=author, group=group)
|
||||
call.session.add(active)
|
||||
else:
|
||||
group = await asyncify(call.session.query(call.alchemy.Keygroup).filter_by(group_name=group_name).one_or_none)
|
||||
if group is None:
|
||||
group = call.alchemy.Keygroup(group_name=group_name)
|
||||
call.session.add(group)
|
||||
active.group = group
|
||||
await asyncify(call.session.commit)
|
||||
await call.reply(f"✅ Hai attivato il gruppo [b]{group_name}[/b].")
|
|
@ -1,39 +0,0 @@
|
|||
import random
|
||||
from ..database.tables import ActiveKvGroup, Royal, Keygroup, Keyvalue
|
||||
from ..utils import Command, Call, asyncify, plusformat
|
||||
|
||||
|
||||
class KvrollCommand(Command):
|
||||
|
||||
command_name = "kvroll"
|
||||
command_description = "Lancia 1d20, poi aggiungici il valore della kv selezionata."
|
||||
command_syntax = "(chiave) [modifier]"
|
||||
|
||||
require_alchemy_tables = {ActiveKvGroup, Royal, Keyvalue, Keygroup}
|
||||
|
||||
@classmethod
|
||||
async def common(cls, call: Call):
|
||||
key = call.args[0].lower()
|
||||
normal_mod_str = call.args.optional(1, 0)
|
||||
try:
|
||||
normal_modifier = int(normal_mod_str)
|
||||
except ValueError:
|
||||
await call.reply("⚠️ Il modificatore specificato non è un numero.")
|
||||
return
|
||||
author = await call.get_author(error_if_none=True)
|
||||
active = await asyncify(call.session.query(call.alchemy.ActiveKvGroup).filter_by(royal=author).one_or_none)
|
||||
if active is None:
|
||||
await call.reply("⚠️ Devi prima attivare un gruppo con il comando [c]kvactive[/c]!")
|
||||
return
|
||||
keyvalue = await asyncify(call.session.query(call.alchemy.Keyvalue).filter_by(group=active.group, key=key).one_or_none)
|
||||
if keyvalue is None:
|
||||
await call.reply("⚠️ La chiave specificata non esiste.")
|
||||
return
|
||||
try:
|
||||
kv_modifier = int(keyvalue.value)
|
||||
except ValueError:
|
||||
await call.reply("⚠️ Il valore della chiave specificata non è un numero.")
|
||||
return
|
||||
roll = random.randrange(1, 21)
|
||||
result = roll + kv_modifier + normal_modifier
|
||||
await call.reply(f"🎲 {roll}{plusformat(kv_modifier)}{plusformat(normal_modifier)} = [b]{result}[/b]")
|
|
@ -1,17 +0,0 @@
|
|||
import asyncio
|
||||
import logging as _logging
|
||||
from ..utils import Command, Call
|
||||
|
||||
|
||||
log = _logging.getLogger(__name__)
|
||||
|
||||
|
||||
class MissingCommand(Command):
|
||||
|
||||
command_name = "missing"
|
||||
command_description = "Informa che il comando non esiste."
|
||||
command_syntax = ""
|
||||
|
||||
@classmethod
|
||||
async def common(cls, call: Call):
|
||||
await call.reply(f"⚠️ Il comando richiesto non esiste.")
|
|
@ -1,12 +0,0 @@
|
|||
from ..utils import Command, Call
|
||||
|
||||
|
||||
class NullCommand(Command):
|
||||
|
||||
command_name = "null"
|
||||
command_description = "Non fa nulla."
|
||||
command_syntax = ""
|
||||
|
||||
@classmethod
|
||||
async def common(cls, call: Call):
|
||||
pass
|
|
@ -1,25 +0,0 @@
|
|||
import datetime
|
||||
import dateparser
|
||||
import typing
|
||||
from ..utils import Command, Call, sleep_until
|
||||
|
||||
|
||||
class ReminderCommand(Command):
|
||||
|
||||
command_name = "reminder"
|
||||
command_description = "Ripete quello che gli avevi chiesto dopo un po' di tempo."
|
||||
command_syntax = "[ (data) ] (testo)"
|
||||
|
||||
@classmethod
|
||||
async def common(cls, call: Call):
|
||||
date_str, reminder_text = call.args.match(r"\[ *(.+?) *] *(.+?) *$")
|
||||
try:
|
||||
date: typing.Optional[datetime.datetime] = dateparser.parse(date_str)
|
||||
except OverflowError:
|
||||
date = None
|
||||
if date is None:
|
||||
await call.reply("⚠️ La data che hai inserito non è valida.")
|
||||
return
|
||||
await call.reply(f"✅ Promemoria impostato per [b]{date.strftime('%Y-%m-%d %H:%M:%S')}[/b]")
|
||||
await sleep_until(date)
|
||||
await call.reply(f"❗️ Promemoria: [b]{reminder_text}[/b]")
|
|
@ -1,20 +0,0 @@
|
|||
import asyncio
|
||||
from ..utils import Command, Call
|
||||
from ..database.tables import Royal, Telegram, Discord
|
||||
|
||||
|
||||
class RoyalnetprofileCommand(Command):
|
||||
|
||||
command_name = "royalnetprofile"
|
||||
command_description = "Invia in chat il link al tuo profilo Royalnet!"
|
||||
command_syntax = ""
|
||||
|
||||
require_alchemy_tables = {Royal, Telegram, Discord}
|
||||
|
||||
@classmethod
|
||||
async def common(cls, call: Call):
|
||||
author = await call.get_author(error_if_none=True)
|
||||
if author is None:
|
||||
await call.reply("⚠️ Devi essere registrato a Royalnet per usare questo comando!")
|
||||
return
|
||||
await call.reply(f"🔗 https://ryg.steffo.eu/profile/{author.username}")
|
|
@ -1,81 +0,0 @@
|
|||
import typing
|
||||
from telegram import Update, User
|
||||
from discord import Message, Member
|
||||
from ..utils import Command, Call, asyncify
|
||||
from ..error import UnsupportedError
|
||||
from ..database.tables import Royal, Telegram, Discord
|
||||
|
||||
|
||||
class SyncCommand(Command):
|
||||
|
||||
command_name = "sync"
|
||||
command_description = "Connetti il tuo account attuale a Royalnet!"
|
||||
command_syntax = "(royalnetusername)"
|
||||
|
||||
require_alchemy_tables = {Royal, Telegram, Discord}
|
||||
|
||||
@classmethod
|
||||
async def common(cls, call: Call):
|
||||
raise UnsupportedError()
|
||||
|
||||
@classmethod
|
||||
async def telegram(cls, call: Call):
|
||||
update: Update = call.kwargs["update"]
|
||||
# Find the user
|
||||
user: typing.Optional[User] = update.effective_user
|
||||
if user is None:
|
||||
raise ValueError("Trying to sync a None user.")
|
||||
# Find the Royal
|
||||
royal = await asyncify(call.session.query(call.alchemy.Royal).filter_by(username=call.args[0]).one_or_none)
|
||||
if royal is None:
|
||||
await call.reply("⚠️ Non esiste alcun account Royalnet con quel nome. Ricorda, gli username sono [b]case-sensitive[/b]!")
|
||||
return
|
||||
# Find if the user is already synced
|
||||
telegram = await asyncify(call.session.query(call.alchemy.Telegram).filter_by(tg_id=user.id).one_or_none)
|
||||
if telegram is None:
|
||||
# Create a Telegram to connect to the Royal
|
||||
# Avatar is WIP
|
||||
telegram = call.alchemy.Telegram(royal=royal,
|
||||
tg_id=user.id,
|
||||
first_name=user.first_name,
|
||||
last_name=user.last_name,
|
||||
username=user.username)
|
||||
call.session.add(telegram)
|
||||
await call.reply(f"✅ Connessione completata: {str(royal)} ⬌ {str(telegram)}")
|
||||
else:
|
||||
# Update the Telegram data
|
||||
telegram.first_name = user.first_name
|
||||
telegram.last_name = user.last_name
|
||||
telegram.username = user.username
|
||||
await call.reply(f"✅ Connessione aggiornata: {str(royal)} ⬌ {str(telegram)}")
|
||||
# Commit the session
|
||||
await asyncify(call.session.commit)
|
||||
|
||||
@classmethod
|
||||
async def discord(cls, call: Call):
|
||||
message: Message = call.kwargs["message"]
|
||||
user: typing.Optional[Member] = message.author
|
||||
# Find the Royal
|
||||
royal = await asyncify(call.session.query(call.alchemy.Royal).filter_by(username=call.args[0]).one_or_none)
|
||||
if royal is None:
|
||||
await call.reply("⚠️ Non esiste alcun account Royalnet con quel nome. Ricorda, gli username sono [b]case-sensitive[/b]!")
|
||||
return
|
||||
# Find if the user is already synced
|
||||
discord = await asyncify(call.session.query(call.alchemy.Discord).filter_by(discord_id=user.id).one_or_none)
|
||||
if discord is None:
|
||||
# Create a Discord to connect to the Royal
|
||||
discord = call.alchemy.Discord(royal=royal,
|
||||
discord_id=user.id,
|
||||
username=user.name,
|
||||
discriminator=user.discriminator,
|
||||
avatar_hash=user.avatar)
|
||||
call.session.add(discord)
|
||||
await call.reply(f"✅ Connessione completata: {str(royal)} ⬌ {str(discord)}")
|
||||
else:
|
||||
# Update the Discord data
|
||||
discord.username = user.name
|
||||
discord.discriminator = user.discriminator
|
||||
discord.avatar_hash = user.avatar
|
||||
await call.reply(f"✅ Connessione aggiornata: {str(royal)} ⬌ {str(discord)}")
|
||||
# Commit the session
|
||||
await asyncify(call.session.commit)
|
|
@ -1,36 +0,0 @@
|
|||
import asyncio
|
||||
from ..utils import Command, Call, asyncify
|
||||
from ..audio import YtdlInfo
|
||||
|
||||
|
||||
class VideoinfoCommand(Command):
|
||||
|
||||
command_name = "videoinfo"
|
||||
command_description = "Visualizza le informazioni di un video."
|
||||
command_syntax = "(url)"
|
||||
|
||||
@classmethod
|
||||
async def common(cls, call: Call):
|
||||
url = call.args[0]
|
||||
info_list = await asyncify(YtdlInfo.retrieve_for_url, url)
|
||||
for info in info_list:
|
||||
info_dict = info.__dict__
|
||||
message = f"🔍 Dati di [b]{info}[/b]:\n"
|
||||
for key in info_dict:
|
||||
# Skip description
|
||||
if key == "description":
|
||||
continue
|
||||
# Skip formats
|
||||
if key == "formats":
|
||||
continue
|
||||
if key == "requested_formats":
|
||||
continue
|
||||
# Skip subtitles
|
||||
if key == "subtitles":
|
||||
continue
|
||||
# Skip empty keys
|
||||
if info_dict[key] is None:
|
||||
continue
|
||||
message += f"[c]{key}[/c]: {info_dict[key]}\n"
|
||||
await call.reply(message)
|
||||
await asyncio.sleep(0.2)
|
Loading…
Reference in a new issue