mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 19:44:20 +00:00
Complete dice command
This commit is contained in:
parent
8965238a98
commit
b9a5a91873
8 changed files with 28 additions and 87 deletions
|
@ -74,6 +74,8 @@ class GenericBot:
|
||||||
request: rh.Request = rh.Request(handler=event_name, data=args)
|
request: rh.Request = rh.Request(handler=event_name, data=args)
|
||||||
response: rh.Response = await self.network.request(destination=destination, request=request)
|
response: rh.Response = await self.network.request(destination=destination, request=request)
|
||||||
if isinstance(response, rh.ResponseFailure):
|
if isinstance(response, rh.ResponseFailure):
|
||||||
|
if response.extra_info["type"] == "CommandError":
|
||||||
|
raise CommandError(response.extra_info["message"])
|
||||||
raise CommandError(f"Herald action call failed:\n"
|
raise CommandError(f"Herald action call failed:\n"
|
||||||
f"[p]{response}[/p]")
|
f"[p]{response}[/p]")
|
||||||
elif isinstance(response, rh.ResponseSuccess):
|
elif isinstance(response, rh.ResponseSuccess):
|
||||||
|
|
|
@ -5,9 +5,6 @@ from royalnet.packs.common.tables import Discord
|
||||||
|
|
||||||
from .diario import Diario
|
from .diario import Diario
|
||||||
from .aliases import Alias
|
from .aliases import Alias
|
||||||
from .activekvgroups import ActiveKvGroup
|
|
||||||
from .keyvalues import Keyvalue
|
|
||||||
from .keygroups import Keygroup
|
|
||||||
from .wikipages import WikiPage
|
from .wikipages import WikiPage
|
||||||
from .wikirevisions import WikiRevision
|
from .wikirevisions import WikiRevision
|
||||||
from .bios import Bio
|
from .bios import Bio
|
||||||
|
@ -24,9 +21,6 @@ available_tables = [
|
||||||
Discord,
|
Discord,
|
||||||
Diario,
|
Diario,
|
||||||
Alias,
|
Alias,
|
||||||
ActiveKvGroup,
|
|
||||||
Keyvalue,
|
|
||||||
Keygroup,
|
|
||||||
WikiPage,
|
WikiPage,
|
||||||
WikiRevision,
|
WikiRevision,
|
||||||
Bio,
|
Bio,
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
from sqlalchemy import Column, \
|
|
||||||
String, \
|
|
||||||
Integer, \
|
|
||||||
ForeignKey
|
|
||||||
from sqlalchemy.orm import relationship
|
|
||||||
from sqlalchemy.ext.declarative import declared_attr
|
|
||||||
|
|
||||||
|
|
||||||
class ActiveKvGroup:
|
|
||||||
__tablename__ = "activekvgroups"
|
|
||||||
|
|
||||||
@declared_attr
|
|
||||||
def royal_id(self):
|
|
||||||
return Column(Integer, ForeignKey("users.uid"), primary_key=True)
|
|
||||||
|
|
||||||
@declared_attr
|
|
||||||
def group_name(self):
|
|
||||||
return Column(String, ForeignKey("keygroups.group_name"), nullable=False)
|
|
||||||
|
|
||||||
@declared_attr
|
|
||||||
def royal(self):
|
|
||||||
return relationship("User", backref="active_kv_group")
|
|
||||||
|
|
||||||
@declared_attr
|
|
||||||
def group(self):
|
|
||||||
return relationship("Keygroup", backref="users_with_this_active")
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return f"<ActiveKvGroup royal={self.royal} group={self.group_name}>"
|
|
|
@ -1,15 +0,0 @@
|
||||||
from sqlalchemy import Column, \
|
|
||||||
String, \
|
|
||||||
ForeignKey
|
|
||||||
from sqlalchemy.ext.declarative import declared_attr
|
|
||||||
|
|
||||||
|
|
||||||
class Keygroup:
|
|
||||||
__tablename__ = "keygroups"
|
|
||||||
|
|
||||||
@declared_attr
|
|
||||||
def group_name(self):
|
|
||||||
return Column(String, ForeignKey("keygroups.group_name"), primary_key=True)
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return f"<Keygroup {self.group_name}>"
|
|
|
@ -1,31 +0,0 @@
|
||||||
from sqlalchemy import Column, \
|
|
||||||
String, \
|
|
||||||
ForeignKey
|
|
||||||
from sqlalchemy.orm import relationship
|
|
||||||
from sqlalchemy.ext.declarative import declared_attr
|
|
||||||
|
|
||||||
|
|
||||||
class Keyvalue:
|
|
||||||
__tablename__ = "keyvalues"
|
|
||||||
|
|
||||||
@declared_attr
|
|
||||||
def group_name(self):
|
|
||||||
return Column(String, ForeignKey("keygroups.group_name"), primary_key=True)
|
|
||||||
|
|
||||||
@declared_attr
|
|
||||||
def key(self):
|
|
||||||
return Column(String, primary_key=True)
|
|
||||||
|
|
||||||
@declared_attr
|
|
||||||
def value(self):
|
|
||||||
return Column(String, nullable=False)
|
|
||||||
|
|
||||||
@declared_attr
|
|
||||||
def group(self):
|
|
||||||
return relationship("Keygroup")
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return f"<Keyvalue group={self.group_name} key={self.key} value={self.value}>"
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"{self.key}: [b]{self.value}[/b]"
|
|
|
@ -1,9 +1,11 @@
|
||||||
# Imports go here!
|
# Imports go here!
|
||||||
|
from .roll import RollCommand
|
||||||
|
from .dice import DiceCommand
|
||||||
|
|
||||||
# Enter the commands of your Pack here!
|
# Enter the commands of your Pack here!
|
||||||
available_commands = [
|
available_commands = [
|
||||||
|
RollCommand,
|
||||||
|
DiceCommand,
|
||||||
]
|
]
|
||||||
|
|
||||||
# Don't change this, it should automatically generate __all__
|
# Don't change this, it should automatically generate __all__
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
import typing
|
|
||||||
import random
|
|
||||||
import dice
|
import dice
|
||||||
from royalnet.commands import *
|
from royalnet.commands import *
|
||||||
|
|
||||||
|
@ -12,4 +10,22 @@ class DiceCommand(Command):
|
||||||
aliases = ["d"]
|
aliases = ["d"]
|
||||||
|
|
||||||
async def run(self, args: CommandArgs, data: CommandData) -> None:
|
async def run(self, args: CommandArgs, data: CommandData) -> None:
|
||||||
...
|
dice_str = args.joined(require_at_least=1)
|
||||||
|
roll = dice.roll(dice_str)
|
||||||
|
try:
|
||||||
|
result = list(roll)
|
||||||
|
except TypeError:
|
||||||
|
result = [roll]
|
||||||
|
message = f"🎲 {dice_str}"
|
||||||
|
total = 0
|
||||||
|
if len(result) > 1:
|
||||||
|
message += f" = "
|
||||||
|
for index, die in enumerate(result):
|
||||||
|
message += f"{die}"
|
||||||
|
total += int(die)
|
||||||
|
if (index + 1) < len(result):
|
||||||
|
message += "+"
|
||||||
|
else:
|
||||||
|
total += int(result[0])
|
||||||
|
message += f" = [b]{total}[/b]"
|
||||||
|
await data.reply(message)
|
||||||
|
|
|
@ -8,6 +8,8 @@ class RollCommand(Command):
|
||||||
|
|
||||||
description: str = "Roll a dice, from N to M (defaults to 1-100)."
|
description: str = "Roll a dice, from N to M (defaults to 1-100)."
|
||||||
|
|
||||||
|
syntax = "[min] [max]"
|
||||||
|
|
||||||
aliases = ["r", "random"]
|
aliases = ["r", "random"]
|
||||||
|
|
||||||
async def run(self, args: CommandArgs, data: CommandData) -> None:
|
async def run(self, args: CommandArgs, data: CommandData) -> None:
|
||||||
|
@ -23,4 +25,4 @@ class RollCommand(Command):
|
||||||
minimum = 1
|
minimum = 1
|
||||||
maximum = 100
|
maximum = 100
|
||||||
result = random.randrange(minimum, maximum+1)
|
result = random.randrange(minimum, maximum+1)
|
||||||
await data.reply(f"🎲 Dice roll [{minimum}-{maximum}]: {result}")
|
await data.reply(f"🎲 Dice roll [{minimum}-{maximum}]: [b]{result}[/b]")
|
||||||
|
|
Loading…
Reference in a new issue