mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-27 13:34:28 +00:00
Make commands @classmethods
This commit is contained in:
parent
8d0e6d8c5c
commit
92e032864e
14 changed files with 41 additions and 25 deletions
|
@ -1,7 +1,7 @@
|
||||||
import os
|
import os
|
||||||
import asyncio
|
import asyncio
|
||||||
from royalnet.bots import TelegramBot
|
from royalnet.bots import TelegramBot
|
||||||
from royalnet.commands import PingCommand, ShipCommand, SmecdsCommand, ColorCommand, CiaoruoziCommand, SyncCommand, DiarioCommand
|
from royalnet.commands import PingCommand, ShipCommand, SmecdsCommand, ColorCommand, CiaoruoziCommand, SyncCommand, DiarioCommand, RageCommand
|
||||||
from royalnet.commands.debug_create import DebugCreateCommand
|
from royalnet.commands.debug_create import DebugCreateCommand
|
||||||
from royalnet.commands.debug_author import DebugAuthorCommand
|
from royalnet.commands.debug_author import DebugAuthorCommand
|
||||||
from royalnet.commands.error_handler import ErrorHandlerCommand
|
from royalnet.commands.error_handler import ErrorHandlerCommand
|
||||||
|
@ -11,7 +11,7 @@ from royalnet.database.tables import Royal, Telegram
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
|
|
||||||
commands = [PingCommand, ShipCommand, SmecdsCommand, ColorCommand, CiaoruoziCommand, DebugCreateCommand, SyncCommand,
|
commands = [PingCommand, ShipCommand, SmecdsCommand, ColorCommand, CiaoruoziCommand, DebugCreateCommand, SyncCommand,
|
||||||
DebugAuthorCommand, DiarioCommand]
|
DebugAuthorCommand, DiarioCommand, RageCommand]
|
||||||
|
|
||||||
master = RoyalnetServer("localhost", 1234, "sas")
|
master = RoyalnetServer("localhost", 1234, "sas")
|
||||||
tg_bot = TelegramBot(os.environ["TG_AK"], "localhost:1234", "sas", commands, os.environ["DB_PATH"], Royal, Telegram, "tg_id", error_command=ErrorHandlerCommand)
|
tg_bot = TelegramBot(os.environ["TG_AK"], "localhost:1234", "sas", commands, os.environ["DB_PATH"], Royal, Telegram, "tg_id", error_command=ErrorHandlerCommand)
|
||||||
|
|
|
@ -6,7 +6,8 @@ from .ciaoruozi import CiaoruoziCommand
|
||||||
from .color import ColorCommand
|
from .color import ColorCommand
|
||||||
from .sync import SyncCommand
|
from .sync import SyncCommand
|
||||||
from .diario import DiarioCommand
|
from .diario import DiarioCommand
|
||||||
|
from .rage import RageCommand
|
||||||
|
|
||||||
|
|
||||||
__all__ = ["NullCommand", "PingCommand", "ShipCommand", "SmecdsCommand", "CiaoruoziCommand", "ColorCommand",
|
__all__ = ["NullCommand", "PingCommand", "ShipCommand", "SmecdsCommand", "CiaoruoziCommand", "ColorCommand",
|
||||||
"SyncCommand", "DiarioCommand"]
|
"SyncCommand", "DiarioCommand", "RageCommand"]
|
||||||
|
|
|
@ -8,7 +8,12 @@ class CiaoruoziCommand(Command):
|
||||||
command_description = "Saluta Ruozi, anche se non è più in RYG."
|
command_description = "Saluta Ruozi, anche se non è più in RYG."
|
||||||
command_syntax = ""
|
command_syntax = ""
|
||||||
|
|
||||||
async def telegram(self, call: Call):
|
@classmethod
|
||||||
|
async def common(cls, call: "Call"):
|
||||||
|
await call.reply("👋 Ciao Ruozi!")
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
async def telegram(cls, call: Call):
|
||||||
update: Update = call.kwargs["update"]
|
update: Update = call.kwargs["update"]
|
||||||
user: User = update.effective_user
|
user: User = update.effective_user
|
||||||
if user.id == 112437036:
|
if user.id == 112437036:
|
||||||
|
|
|
@ -7,7 +7,8 @@ class ColorCommand(Command):
|
||||||
command_description = "Invia un colore in chat...?"
|
command_description = "Invia un colore in chat...?"
|
||||||
command_syntax = ""
|
command_syntax = ""
|
||||||
|
|
||||||
async def common(self, call: Call):
|
@classmethod
|
||||||
|
async def common(cls, call: Call):
|
||||||
await call.reply("""
|
await call.reply("""
|
||||||
[i]I am sorry, unknown error occured during working with your request, Admin were notified[/i]
|
[i]I am sorry, unknown error occured during working with your request, Admin were notified[/i]
|
||||||
""")
|
""")
|
||||||
|
|
|
@ -10,7 +10,8 @@ class DebugAuthorCommand(Command):
|
||||||
|
|
||||||
require_alchemy_tables = {Royal, Telegram}
|
require_alchemy_tables = {Royal, Telegram}
|
||||||
|
|
||||||
async def common(self, call: Call):
|
@classmethod
|
||||||
|
async def common(cls, call: Call):
|
||||||
author = await call.get_author()
|
author = await call.get_author()
|
||||||
if author is None:
|
if author is None:
|
||||||
await call.reply(f"☁️ L'autore di questa chiamata è sconosciuto.")
|
await call.reply(f"☁️ L'autore di questa chiamata è sconosciuto.")
|
||||||
|
|
|
@ -10,7 +10,8 @@ class DebugCreateCommand(Command):
|
||||||
|
|
||||||
require_alchemy_tables = {Royal, Alias}
|
require_alchemy_tables = {Royal, Alias}
|
||||||
|
|
||||||
async def common(self, call: Call):
|
@classmethod
|
||||||
|
async def common(cls, call: Call):
|
||||||
royal = call.alchemy.Royal(username=call.args[0], role="Member")
|
royal = call.alchemy.Royal(username=call.args[0], role="Member")
|
||||||
call.session.add(royal)
|
call.session.add(royal)
|
||||||
alias = call.alchemy.Alias(royal=royal, alias=royal.username.lower())
|
alias = call.alchemy.Alias(royal=royal, alias=royal.username.lower())
|
||||||
|
|
|
@ -18,7 +18,8 @@ class DiarioCommand(Command):
|
||||||
|
|
||||||
require_alchemy_tables = {Royal, Diario, Alias}
|
require_alchemy_tables = {Royal, Diario, Alias}
|
||||||
|
|
||||||
async def _telegram_to_imgur(self, photosizes: typing.List[telegram.PhotoSize], caption="") -> str:
|
@classmethod
|
||||||
|
async def _telegram_to_imgur(cls, photosizes: typing.List[telegram.PhotoSize], caption="") -> str:
|
||||||
# Select the largest photo
|
# Select the largest photo
|
||||||
largest_photo = sorted(photosizes, key=lambda p: p.width * p.height)[-1]
|
largest_photo = sorted(photosizes, key=lambda p: p.width * p.height)[-1]
|
||||||
# Get the photo url
|
# Get the photo url
|
||||||
|
@ -41,7 +42,8 @@ class DiarioCommand(Command):
|
||||||
raise ExternalError("imgur returned an error in the image upload.")
|
raise ExternalError("imgur returned an error in the image upload.")
|
||||||
return response["data"]["link"]
|
return response["data"]["link"]
|
||||||
|
|
||||||
async def common(self, call: Call):
|
@classmethod
|
||||||
|
async def common(cls, call: Call):
|
||||||
# Find the creator of the quotes
|
# Find the creator of the quotes
|
||||||
creator = await call.get_author()
|
creator = await call.get_author()
|
||||||
if creator is None:
|
if creator is None:
|
||||||
|
@ -94,7 +96,8 @@ class DiarioCommand(Command):
|
||||||
await asyncify(call.session.commit)
|
await asyncify(call.session.commit)
|
||||||
await call.reply(f"✅ {str(diario)}")
|
await call.reply(f"✅ {str(diario)}")
|
||||||
|
|
||||||
async def telegram(self, call: Call):
|
@classmethod
|
||||||
|
async def telegram(cls, call: Call):
|
||||||
update: telegram.Update = call.kwargs["update"]
|
update: telegram.Update = call.kwargs["update"]
|
||||||
message: telegram.Message = update.message
|
message: telegram.Message = update.message
|
||||||
reply: telegram.Message = message.reply_to_message
|
reply: telegram.Message = message.reply_to_message
|
||||||
|
@ -110,9 +113,7 @@ class DiarioCommand(Command):
|
||||||
if photosizes:
|
if photosizes:
|
||||||
# Text is a caption
|
# Text is a caption
|
||||||
text = reply.caption
|
text = reply.caption
|
||||||
# Python is doing some weird stuff here, self._telegram_to_imgur appears to be unbound?
|
media_url = await cls._telegram_to_imgur(photosizes, text if text is not None else "")
|
||||||
# noinspection PyArgumentList
|
|
||||||
media_url = await self._telegram_to_imgur(self, photosizes, text if text is not None else "")
|
|
||||||
else:
|
else:
|
||||||
media_url = None
|
media_url = None
|
||||||
# Ensure there is a text or an image
|
# Ensure there is a text or an image
|
||||||
|
@ -137,9 +138,7 @@ class DiarioCommand(Command):
|
||||||
# Check if there's an image associated with the reply
|
# Check if there's an image associated with the reply
|
||||||
photosizes: typing.Optional[typing.List[telegram.PhotoSize]] = message.photo
|
photosizes: typing.Optional[typing.List[telegram.PhotoSize]] = message.photo
|
||||||
if photosizes:
|
if photosizes:
|
||||||
# Python is doing some weird stuff here, self._telegram_to_imgur appears to be unbound?
|
media_url = await cls._telegram_to_imgur(photosizes, raw_text if raw_text is not None else "")
|
||||||
# noinspection PyArgumentList
|
|
||||||
media_url = await self._telegram_to_imgur(self, photosizes, raw_text if raw_text is not None else "")
|
|
||||||
else:
|
else:
|
||||||
media_url = None
|
media_url = None
|
||||||
# Parse the text, if it exists
|
# Parse the text, if it exists
|
||||||
|
|
|
@ -9,10 +9,12 @@ class ErrorHandlerCommand(Command):
|
||||||
command_description = "Gestisce gli errori causati dagli altri comandi."
|
command_description = "Gestisce gli errori causati dagli altri comandi."
|
||||||
command_syntax = ""
|
command_syntax = ""
|
||||||
|
|
||||||
async def common(self, call: Call):
|
@classmethod
|
||||||
|
async def common(cls, call: Call):
|
||||||
raise UnsupportedError()
|
raise UnsupportedError()
|
||||||
|
|
||||||
async def telegram(self, call: Call):
|
@classmethod
|
||||||
|
async def telegram(cls, call: Call):
|
||||||
try:
|
try:
|
||||||
e_type, e_value, e_tb = call.kwargs["exception_info"]
|
e_type, e_value, e_tb = call.kwargs["exception_info"]
|
||||||
except InvalidInputError:
|
except InvalidInputError:
|
||||||
|
|
|
@ -7,5 +7,6 @@ class NullCommand(Command):
|
||||||
command_description = "Non fa nulla."
|
command_description = "Non fa nulla."
|
||||||
command_syntax = ""
|
command_syntax = ""
|
||||||
|
|
||||||
async def common(self, call: Call):
|
@classmethod
|
||||||
|
async def common(cls, call: Call):
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -8,7 +8,8 @@ class PingCommand(Command):
|
||||||
command_description = "Ping pong!"
|
command_description = "Ping pong!"
|
||||||
command_syntax = "[time_to_wait]"
|
command_syntax = "[time_to_wait]"
|
||||||
|
|
||||||
async def common(self, call: Call):
|
@classmethod
|
||||||
|
async def common(cls, call: Call):
|
||||||
try:
|
try:
|
||||||
time = int(call.args[0])
|
time = int(call.args[0])
|
||||||
except InvalidInputError:
|
except InvalidInputError:
|
||||||
|
|
|
@ -11,7 +11,8 @@ class ShipCommand(Command):
|
||||||
command_description = "Crea una ship tra due cose."
|
command_description = "Crea una ship tra due cose."
|
||||||
command_syntax = "(uno) (due)"
|
command_syntax = "(uno) (due)"
|
||||||
|
|
||||||
async def common(self, call: Call):
|
@classmethod
|
||||||
|
async def common(cls, call: Call):
|
||||||
name_one = call.args[0]
|
name_one = call.args[0]
|
||||||
name_two = call.args[1]
|
name_two = call.args[1]
|
||||||
if name_two == "+":
|
if name_two == "+":
|
||||||
|
|
|
@ -57,6 +57,7 @@ class SmecdsCommand(Command):
|
||||||
command_description = "Secondo me, è colpa dello stagista..."
|
command_description = "Secondo me, è colpa dello stagista..."
|
||||||
command_syntax = ""
|
command_syntax = ""
|
||||||
|
|
||||||
async def common(self, call: Call):
|
@classmethod
|
||||||
|
async def common(cls, call: Call):
|
||||||
ds = random.sample(DS_LIST, 1)[0]
|
ds = random.sample(DS_LIST, 1)[0]
|
||||||
return await call.reply(safeformat(SMECDS, ds=ds))
|
return await call.reply(safeformat(SMECDS, ds=ds))
|
||||||
|
|
|
@ -12,10 +12,12 @@ class SyncCommand(Command):
|
||||||
|
|
||||||
require_alchemy_tables = {Royal, Telegram}
|
require_alchemy_tables = {Royal, Telegram}
|
||||||
|
|
||||||
async def common(self, call: Call):
|
@classmethod
|
||||||
|
async def common(cls, call: Call):
|
||||||
raise UnsupportedError()
|
raise UnsupportedError()
|
||||||
|
|
||||||
async def telegram(self, call: Call):
|
@classmethod
|
||||||
|
async def telegram(cls, call: Call):
|
||||||
update: Update = call.kwargs["update"]
|
update: Update = call.kwargs["update"]
|
||||||
# Find the user
|
# Find the user
|
||||||
user: typing.Optional[User] = update.effective_user
|
user: typing.Optional[User] = update.effective_user
|
||||||
|
|
|
@ -58,7 +58,7 @@ class Call:
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
coroutine = getattr(self.command, "common")
|
coroutine = getattr(self.command, "common")
|
||||||
try:
|
try:
|
||||||
result = await coroutine(self.command, self)
|
result = await coroutine(self)
|
||||||
finally:
|
finally:
|
||||||
await self.session_end()
|
await self.session_end()
|
||||||
return result
|
return result
|
||||||
|
|
Loading…
Reference in a new issue