Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
62f53bde55 | ||
|
|
b15e99ca68 | ||
|
|
628152c22c | ||
|
|
f00b6502f6 |
@@ -1,11 +1,15 @@
|
||||
"""File contains classes defining the Hydra configuraton structure."""
|
||||
"""File contains classes defining Dakiny settings structure."""
|
||||
|
||||
from dataclasses import dataclass
|
||||
|
||||
from dataclass_wizard import YAMLWizard
|
||||
|
||||
CONFIG_LOCATION = "conf/config.yaml"
|
||||
|
||||
|
||||
@dataclass
|
||||
class Params:
|
||||
"""Class defines the various configuration parameters."""
|
||||
class Settings:
|
||||
"""Class defines settings editable by Clan Council."""
|
||||
|
||||
admin_channel_id: int # might want to rename this...
|
||||
announcement_category_id: int
|
||||
@@ -13,28 +17,34 @@ class Params:
|
||||
clan_council_role_id: int
|
||||
clan_info_channel_id: int
|
||||
clan_member_role_id: int
|
||||
discord_token: str
|
||||
event_host_points: int
|
||||
event_host_role_id: int
|
||||
event_participate_points: int
|
||||
event_points_weekly_limit: int
|
||||
event_post_channel_id: int
|
||||
general_channel_id: int
|
||||
git_branch: str
|
||||
guild_id: int
|
||||
high_council_role_id: int
|
||||
voting_parent_id: int
|
||||
|
||||
|
||||
@dataclass
|
||||
class Params:
|
||||
"""Class defines start parameters that shouldn't be changed."""
|
||||
|
||||
discord_token: str
|
||||
git_branch: str
|
||||
guild_id: int
|
||||
|
||||
|
||||
@dataclass
|
||||
class Election:
|
||||
"""Class defines relevant election dates."""
|
||||
|
||||
name: str
|
||||
election_start: str
|
||||
highcouncil_election_announce: str
|
||||
highcouncil_election_end: str
|
||||
highcouncil_election_start: str
|
||||
name: str
|
||||
term_end: str
|
||||
term_start: str
|
||||
voting_end: str
|
||||
@@ -42,8 +52,16 @@ class Election:
|
||||
|
||||
|
||||
@dataclass
|
||||
class DakinyConfig:
|
||||
class DakinySettings(YAMLWizard):
|
||||
"""Class defines all configs required for Dakiny Bot."""
|
||||
|
||||
election_cycles: list[Election]
|
||||
params: Params
|
||||
settings: Settings
|
||||
|
||||
def save(self) -> None:
|
||||
"""Saves settings to the yaml file."""
|
||||
self.to_yaml_file(CONFIG_LOCATION)
|
||||
|
||||
|
||||
settings = DakinySettings.from_yaml_file(CONFIG_LOCATION)
|
||||
+3
-3
@@ -9,7 +9,7 @@ from classes.nominate_highcouncil_views import NominateHighCouncilView
|
||||
from classes.nominate_views import NominateView
|
||||
from classes.voting_highcouncil_views import VoteHighcouncilView
|
||||
from classes.voting_views import VoteView
|
||||
from config import DakinyConfig
|
||||
from DakinySettings import DakinySettings
|
||||
from database_setup.sql_data_classes import (
|
||||
CouncilMembers,
|
||||
ElectionInformation,
|
||||
@@ -39,7 +39,7 @@ class Election:
|
||||
the cycle.
|
||||
"""
|
||||
|
||||
def __init__(self, cycle: int, config: DakinyConfig, guild: nextcord.Guild) -> None:
|
||||
def __init__(self, cycle: int, config: DakinySettings, guild: nextcord.Guild) -> None:
|
||||
"""
|
||||
Generates all dates relevant to the election cycle determined by the config and cycle.
|
||||
|
||||
@@ -48,7 +48,7 @@ class Election:
|
||||
config (DakinyConfig): The entire config object.
|
||||
guild (nextcord.Guild): The guild that this election is running in.
|
||||
"""
|
||||
self.config: DakinyConfig = config
|
||||
self.config: DakinySettings = config
|
||||
self.cycle = cycle
|
||||
self.election_cycle = self.config.election_cycles[self.cycle]
|
||||
self.election_start: datetime = get_datetime(self.election_cycle.election_start)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"""Contains various views to be used in the high council nomination process."""
|
||||
|
||||
import nextcord
|
||||
from config import DakinyConfig
|
||||
from DakinySettings import DakinySettings
|
||||
from database_setup.sql_data_classes import CouncilMembers, engine
|
||||
from nextcord.interactions import Interaction
|
||||
from sqlalchemy import select
|
||||
@@ -23,7 +23,7 @@ class NominateDMModal(nextcord.ui.Modal):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
config: DakinyConfig,
|
||||
config: DakinySettings,
|
||||
usr_id: int,
|
||||
usr_nominated: bool, # noqa: FBT001
|
||||
speech_content: str,
|
||||
@@ -33,7 +33,7 @@ class NominateDMModal(nextcord.ui.Modal):
|
||||
timeout=5 * 60, # 5 minutes
|
||||
)
|
||||
self.usr_id: int = usr_id
|
||||
self.config: DakinyConfig = config
|
||||
self.config: DakinySettings = config
|
||||
self.usr_nominated = usr_nominated
|
||||
|
||||
self.speech = nextcord.ui.TextInput(
|
||||
@@ -85,7 +85,7 @@ class NominateCLModal(nextcord.ui.Modal):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
config: DakinyConfig,
|
||||
config: DakinySettings,
|
||||
usr_id: int,
|
||||
usr_nominated: bool, # noqa: FBT001
|
||||
speech_content: str,
|
||||
@@ -95,7 +95,7 @@ class NominateCLModal(nextcord.ui.Modal):
|
||||
timeout=5 * 60, # 5 minutes
|
||||
)
|
||||
self.usr_id: int = usr_id
|
||||
self.config: DakinyConfig = config
|
||||
self.config: DakinySettings = config
|
||||
self.usr_nominated = usr_nominated
|
||||
|
||||
self.speech = nextcord.ui.TextInput(
|
||||
@@ -141,9 +141,9 @@ class NominateCLModal(nextcord.ui.Modal):
|
||||
class NominateHighCouncilView(nextcord.ui.View):
|
||||
"""The buttons to press to start your High Council nomination."""
|
||||
|
||||
def __init__(self, config: DakinyConfig, guild: nextcord.Guild):
|
||||
def __init__(self, config: DakinySettings, guild: nextcord.Guild):
|
||||
super().__init__(timeout=None)
|
||||
self.config: DakinyConfig = config
|
||||
self.config: DakinySettings = config
|
||||
self.guild: nextcord.Guild = guild
|
||||
|
||||
@nextcord.ui.button(
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"""Contains various views to be used in the nomination process."""
|
||||
|
||||
import nextcord
|
||||
from config import DakinyConfig
|
||||
from DakinySettings import DakinySettings
|
||||
from database_setup.sql_data_classes import CouncilMembers, engine
|
||||
from nextcord.interactions import Interaction
|
||||
from sqlalchemy import select
|
||||
@@ -18,7 +18,7 @@ class NominateModal(nextcord.ui.Modal):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
config: DakinyConfig,
|
||||
config: DakinySettings,
|
||||
usr_id: int,
|
||||
usr_nominated: bool, # noqa: FBT001
|
||||
speech_content: str,
|
||||
@@ -28,7 +28,7 @@ class NominateModal(nextcord.ui.Modal):
|
||||
timeout=5 * 60, # 5 minutes
|
||||
)
|
||||
self.usr_id: int = usr_id
|
||||
self.config: DakinyConfig = config
|
||||
self.config: DakinySettings = config
|
||||
self.usr_nominated = usr_nominated
|
||||
|
||||
self.speech = nextcord.ui.TextInput(
|
||||
@@ -79,9 +79,9 @@ class NominateModal(nextcord.ui.Modal):
|
||||
class NominateView(nextcord.ui.View):
|
||||
"""The button to press to start your nomination."""
|
||||
|
||||
def __init__(self, config: DakinyConfig, guild: nextcord.Guild):
|
||||
def __init__(self, config: DakinySettings, guild: nextcord.Guild):
|
||||
super().__init__(timeout=None)
|
||||
self.config: DakinyConfig = config
|
||||
self.config: DakinySettings = config
|
||||
self.guild: nextcord.Guild = guild
|
||||
|
||||
@nextcord.ui.button(
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"""Contains various views to be used while voting for high council. Controls the logic when performing the vote."""
|
||||
|
||||
import nextcord
|
||||
from config import DakinyConfig
|
||||
from DakinySettings import DakinySettings
|
||||
from database_setup.sql_data_classes import (
|
||||
CouncilMembers,
|
||||
ElectionInformation,
|
||||
@@ -18,7 +18,7 @@ from utils import VoteType, build_highcouncil_votes_str, get_election_name
|
||||
class VoteSelect(nextcord.ui.StringSelect):
|
||||
"""Vote view string select."""
|
||||
|
||||
def __init__(self, options: list["SelectOption"], config: DakinyConfig, election_type: str) -> None:
|
||||
def __init__(self, options: list["SelectOption"], config: DakinySettings, election_type: str) -> None:
|
||||
super().__init__(
|
||||
placeholder="Choose 1",
|
||||
min_values=1,
|
||||
@@ -83,7 +83,7 @@ class VoteSelect(nextcord.ui.StringSelect):
|
||||
class VoteHighcouncilView(nextcord.ui.View):
|
||||
"""The button to press to start voting for HighCouncil."""
|
||||
|
||||
def __init__(self, config: DakinyConfig, guild: nextcord.Guild):
|
||||
def __init__(self, config: DakinySettings, guild: nextcord.Guild):
|
||||
super().__init__(timeout=None)
|
||||
self.config = config
|
||||
self.guild = guild
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"""Contains various views to be used while voting. Controls the logic when performing the vote."""
|
||||
|
||||
import nextcord
|
||||
from config import DakinyConfig
|
||||
from DakinySettings import DakinySettings
|
||||
from database_setup.sql_data_classes import (
|
||||
CouncilMembers,
|
||||
ElectionInformation,
|
||||
@@ -18,7 +18,7 @@ from utils import VoteType, build_votes_str, get_election_name
|
||||
class VoteSelect(nextcord.ui.StringSelect):
|
||||
"""Vote view string select."""
|
||||
|
||||
def __init__(self, options: list["SelectOption"], config: DakinyConfig) -> None:
|
||||
def __init__(self, options: list["SelectOption"], config: DakinySettings) -> None:
|
||||
super().__init__(
|
||||
placeholder="Choose 1",
|
||||
min_values=1,
|
||||
@@ -79,7 +79,7 @@ class VoteSelect(nextcord.ui.StringSelect):
|
||||
class VoteView(nextcord.ui.View):
|
||||
"""The button to press to start your nomination."""
|
||||
|
||||
def __init__(self, config: DakinyConfig, guild: nextcord.Guild):
|
||||
def __init__(self, config: DakinySettings, guild: nextcord.Guild):
|
||||
super().__init__(timeout=None)
|
||||
self.config = config
|
||||
self.guild = guild
|
||||
|
||||
@@ -14,7 +14,7 @@ from utils import REPO_DIR, edit_clan_council_info, update_clan_messages
|
||||
if TYPE_CHECKING:
|
||||
import nextcord
|
||||
|
||||
from config import DakinyConfig
|
||||
from DakinySettings import DakinySettings
|
||||
|
||||
app = FastAPI()
|
||||
REPO_URL = "https://gitea.cheezers.org/imcompiling/dakiny-messages.git"
|
||||
@@ -30,7 +30,7 @@ class ClanMessages(commands.Cog, name="Clan Messages"):
|
||||
|
||||
def __init__(self, bot: commands.Bot):
|
||||
self.bot = bot
|
||||
self.config: DakinyConfig = self.bot.config
|
||||
self.config: DakinySettings = self.bot.config
|
||||
self.repo_setup()
|
||||
|
||||
@commands.Cog.listener()
|
||||
|
||||
@@ -4,7 +4,7 @@ import nextcord
|
||||
from discord import TextInputStyle
|
||||
from nextcord.ext import commands
|
||||
|
||||
from config import DakinyConfig
|
||||
from DakinySettings import DakinySettings
|
||||
from utils import GUILDS, MAX_DISCORD_MESSAGE_LENGTH, record_event_points
|
||||
|
||||
|
||||
@@ -155,11 +155,11 @@ class EventView(nextcord.ui.View):
|
||||
Also contains a UserSelect object to pick discord members.
|
||||
"""
|
||||
|
||||
def __init__(self, name: str, config: DakinyConfig, host_id: int):
|
||||
def __init__(self, name: str, config: DakinySettings, host_id: int):
|
||||
super().__init__()
|
||||
|
||||
self.name: str = name
|
||||
self.config: DakinyConfig = config
|
||||
self.config: DakinySettings = config
|
||||
self.host_id: int = host_id
|
||||
|
||||
self.event_participants = ParticipantSelect()
|
||||
|
||||
@@ -9,7 +9,7 @@ from sqlalchemy.orm import Session
|
||||
from database_setup.sql_data_classes import Presences, engine
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from config import DakinyConfig
|
||||
from DakinySettings import DakinySettings
|
||||
|
||||
|
||||
class RequestCog(commands.Cog, name="Request Commands"):
|
||||
@@ -41,7 +41,7 @@ class RequestCog(commands.Cog, name="Request Commands"):
|
||||
interaction (nextcord.Interaction): Interaction that invoked the command.
|
||||
presence (str): The presence to add.
|
||||
"""
|
||||
config: DakinyConfig = self.bot.config
|
||||
config: DakinySettings = self.bot.config
|
||||
content = f'<@{interaction.user.id}> would like to add presence "{presence}."'
|
||||
view = PresenceChange(presence)
|
||||
await self.bot.get_channel(config.params.admin_channel_id).send(content=content, view=view)
|
||||
@@ -65,7 +65,7 @@ class RequestCog(commands.Cog, name="Request Commands"):
|
||||
interaction (nextcord.Interaction): Interaction that invoked the command.
|
||||
new_nickname(str): The username to change to.
|
||||
"""
|
||||
config: DakinyConfig = self.bot.config
|
||||
config: DakinySettings = self.bot.config
|
||||
content = f'<@{interaction.user.id}> would like to change their username to "{new_nickname}."'
|
||||
view = UsernameRequest(interaction.user.id, new_nickname)
|
||||
await self.bot.get_channel(config.params.admin_channel_id).send(content=content, view=view)
|
||||
|
||||
@@ -9,7 +9,7 @@ from classes.election import Election
|
||||
from utils import GUILDS, get_current_election_cycle
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from config import DakinyConfig
|
||||
from DakinySettings import DakinySettings
|
||||
|
||||
|
||||
ME = 206602713511886849
|
||||
@@ -44,7 +44,7 @@ class TestCog(commands.Cog, name="Test commands."):
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Interaction with the message.
|
||||
"""
|
||||
config: DakinyConfig = self.bot.config
|
||||
config: DakinySettings = self.bot.config
|
||||
cycle = Election(
|
||||
get_current_election_cycle(config),
|
||||
config,
|
||||
@@ -62,7 +62,7 @@ class TestCog(commands.Cog, name="Test commands."):
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Interaction with the message.
|
||||
"""
|
||||
config: DakinyConfig = self.bot.config
|
||||
config: DakinySettings = self.bot.config
|
||||
cycle = Election(
|
||||
get_current_election_cycle(config),
|
||||
config,
|
||||
@@ -80,7 +80,7 @@ class TestCog(commands.Cog, name="Test commands."):
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Interaction with the message.
|
||||
"""
|
||||
config: DakinyConfig = self.bot.config
|
||||
config: DakinySettings = self.bot.config
|
||||
cycle = Election(
|
||||
get_current_election_cycle(config),
|
||||
config,
|
||||
@@ -98,7 +98,7 @@ class TestCog(commands.Cog, name="Test commands."):
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Interaction with the message.
|
||||
"""
|
||||
config: DakinyConfig = self.bot.config
|
||||
config: DakinySettings = self.bot.config
|
||||
cycle = Election(
|
||||
get_current_election_cycle(config),
|
||||
config,
|
||||
@@ -116,7 +116,7 @@ class TestCog(commands.Cog, name="Test commands."):
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Interaction with the message.
|
||||
"""
|
||||
config: DakinyConfig = self.bot.config
|
||||
config: DakinySettings = self.bot.config
|
||||
cycle = Election(
|
||||
get_current_election_cycle(config),
|
||||
config,
|
||||
@@ -134,7 +134,7 @@ class TestCog(commands.Cog, name="Test commands."):
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Interaction with the message.
|
||||
"""
|
||||
config: DakinyConfig = self.bot.config
|
||||
config: DakinySettings = self.bot.config
|
||||
cycle = Election(
|
||||
get_current_election_cycle(config),
|
||||
config,
|
||||
@@ -152,7 +152,7 @@ class TestCog(commands.Cog, name="Test commands."):
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Interaction with the message.
|
||||
"""
|
||||
config: DakinyConfig = self.bot.config
|
||||
config: DakinySettings = self.bot.config
|
||||
cycle = Election(
|
||||
get_current_election_cycle(config),
|
||||
config,
|
||||
|
||||
@@ -17,7 +17,7 @@ from utils import get_current_election_cycle
|
||||
if TYPE_CHECKING:
|
||||
import nextcord
|
||||
|
||||
from config import DakinyConfig
|
||||
from DakinySettings import DakinySettings
|
||||
|
||||
KANDY = 239547993106284544
|
||||
|
||||
@@ -76,7 +76,7 @@ class DailyLoop(commands.Cog, name="Daily Loop"):
|
||||
Returns:
|
||||
Election: Current election cycle, None if there is no election happening.
|
||||
"""
|
||||
config: DakinyConfig = self.bot.config
|
||||
config: DakinySettings = self.bot.config
|
||||
cycle = get_current_election_cycle(config)
|
||||
|
||||
# prevent exception from using cycle as an Int in an array
|
||||
|
||||
@@ -2,23 +2,17 @@
|
||||
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
import hydra
|
||||
import nextcord
|
||||
from hydra.core.config_store import ConfigStore
|
||||
from nextcord.ext import commands
|
||||
|
||||
from classes.nominate_highcouncil_views import NominateHighCouncilView
|
||||
from classes.nominate_views import NominateView
|
||||
from classes.voting_highcouncil_views import VoteHighcouncilView
|
||||
from classes.voting_views import VoteView
|
||||
from config import DakinyConfig
|
||||
from DakinySettings import DakinySettings
|
||||
from database_setup import create_database
|
||||
|
||||
cs = ConfigStore.instance()
|
||||
cs.store(name="dakiny_config", node=DakinyConfig)
|
||||
|
||||
birthday_list: list[int] = []
|
||||
|
||||
logger = logging.getLogger("nextcord")
|
||||
@@ -28,26 +22,24 @@ handler.setFormatter(logging.Formatter("%(asctime)s:%(levelname)s:%(name)s: %(me
|
||||
logger.addHandler(handler)
|
||||
|
||||
|
||||
@hydra.main(config_path="conf", config_name="config")
|
||||
def main(cfg: DakinyConfig) -> None:
|
||||
def main() -> None:
|
||||
"""
|
||||
Builds and runs bot.
|
||||
|
||||
Args:
|
||||
cfg (DakinyConfig): Passed in hydra configuration.
|
||||
"""
|
||||
# Allows privledged intents for monitoring members joining, roles editing, and role assignments
|
||||
# Allows privileged intents for monitoring members joining, roles editing, and role assignments
|
||||
# These need to be enabled in the developer portal as well
|
||||
intents = nextcord.Intents.default()
|
||||
|
||||
# Required in order to read messages (eg. prefix commands)
|
||||
intents.message_content = True
|
||||
|
||||
# To enable the members priveleged intent:
|
||||
# To enable the members privileged intent:
|
||||
intents.members = True
|
||||
|
||||
bot = commands.Bot(intents=intents)
|
||||
bot.config = cfg
|
||||
|
||||
# Get the modules of all cogs whose directory structure is ./cogs/<module_name>
|
||||
for folder in os.listdir("cogs"):
|
||||
@@ -69,7 +61,4 @@ def main(cfg: DakinyConfig) -> None:
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.argv.append("hydra.job.chdir=False")
|
||||
sys.argv.append("hydra/job_logging=none")
|
||||
sys.argv.append("hydra/hydra_logging=none")
|
||||
main() # pylint: disable=no-value-for-parameter
|
||||
main()
|
||||
|
||||
+1
-2
@@ -10,14 +10,13 @@ package-mode = false
|
||||
python = "^3.12"
|
||||
gitpython = "^3.1.43"
|
||||
fastapi = "^0.111.0"
|
||||
hydra-core = "^1.3.2"
|
||||
nextcord = "^2.6.0"
|
||||
pandas = "^2.2.2"
|
||||
python-dotenv = "^1.0.1"
|
||||
pytz = "^2024.1"
|
||||
sqlalchemy = "^2.0.30"
|
||||
aiofiles = "^23.2.1"
|
||||
setuptools = "^70.0.0"
|
||||
dataclass-wizard = "^0.22.3"
|
||||
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
|
||||
@@ -12,7 +12,7 @@ import nextcord
|
||||
from sqlalchemy import select, true, update
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from config import DakinyConfig
|
||||
from DakinySettings import DakinySettings
|
||||
from database_setup.sql_data_classes import (
|
||||
CouncilMembers,
|
||||
EventPoints,
|
||||
@@ -57,7 +57,7 @@ def get_datetime(day: str) -> datetime:
|
||||
return datetime(year, month, day, tzinfo=UTC)
|
||||
|
||||
|
||||
def get_election_name(config: DakinyConfig) -> str:
|
||||
def get_election_name(config: DakinySettings) -> str:
|
||||
"""
|
||||
Builds the unique name of the current election cycle.
|
||||
|
||||
@@ -72,7 +72,7 @@ def get_election_name(config: DakinyConfig) -> str:
|
||||
return f"vote-{get_datetime(current_cycle.term_start).year}-{current_cycle.name}"
|
||||
|
||||
|
||||
def get_quarter_name(config: DakinyConfig) -> str:
|
||||
def get_quarter_name(config: DakinySettings) -> str:
|
||||
"""
|
||||
Builds the name of the current cycle/quarter.
|
||||
|
||||
@@ -88,7 +88,7 @@ def get_quarter_name(config: DakinyConfig) -> str:
|
||||
return f"{get_datetime(current_cycle.term_start).year}-{current_cycle.name}"
|
||||
|
||||
|
||||
def get_current_election_cycle(config: DakinyConfig) -> int:
|
||||
def get_current_election_cycle(config: DakinySettings) -> int:
|
||||
"""
|
||||
Returns index for active election. An election is considered active between the election start and the term start.
|
||||
|
||||
@@ -111,7 +111,7 @@ def get_current_election_cycle(config: DakinyConfig) -> int:
|
||||
return get_quarter_cycle(config)
|
||||
|
||||
|
||||
def get_quarter_cycle(config: DakinyConfig) -> int:
|
||||
def get_quarter_cycle(config: DakinySettings) -> int:
|
||||
"""
|
||||
Returns the index for the current cycle/quarter. Defined as between term start and end. Shouldn't return none.
|
||||
|
||||
@@ -132,7 +132,7 @@ def get_quarter_cycle(config: DakinyConfig) -> int:
|
||||
return None
|
||||
|
||||
|
||||
def build_votes_str(config: DakinyConfig, guild: nextcord.Guild) -> str:
|
||||
def build_votes_str(config: DakinySettings, guild: nextcord.Guild) -> str:
|
||||
"""
|
||||
Creates a string that contains all nominees and their votes to be sent as a discord message.
|
||||
|
||||
@@ -168,7 +168,7 @@ def build_votes_str(config: DakinyConfig, guild: nextcord.Guild) -> str:
|
||||
return votes_str
|
||||
|
||||
|
||||
def build_highcouncil_votes_str(config: DakinyConfig, guild: nextcord.Guild) -> str:
|
||||
def build_highcouncil_votes_str(config: DakinySettings, guild: nextcord.Guild) -> str:
|
||||
"""
|
||||
Creates a string that contains all high council nominees and their votes to be sent as a discord message.
|
||||
|
||||
@@ -302,7 +302,7 @@ def decorate_dm_nomination(user_id: int, speech: str) -> str:
|
||||
return msg
|
||||
|
||||
|
||||
def record_event_points(config: DakinyConfig, users: Sequence[str], add_points: int, *, is_member: bool) -> None:
|
||||
def record_event_points(config: DakinySettings, users: Sequence[str], add_points: int, *, is_member: bool) -> None:
|
||||
"""
|
||||
Adds event points to all users listed.
|
||||
|
||||
@@ -502,7 +502,7 @@ async def edit_clan_message(
|
||||
session.commit()
|
||||
|
||||
|
||||
async def edit_clan_council_info(guild: nextcord.Guild, config: DakinyConfig) -> None:
|
||||
async def edit_clan_council_info(guild: nextcord.Guild, config: DakinySettings) -> None:
|
||||
"""
|
||||
Gets the winners of the elections and updates the permanent message that states the current council.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user