Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d56251c0b9 | ||
|
|
667a600ec6 | ||
|
|
03a94ca6dd | ||
|
|
9da598e4d9 | ||
|
|
3a280696ca | ||
|
|
8825afdb46 | ||
|
|
6fc91e0708 | ||
|
|
95cfcca600 | ||
|
|
0419c9dfd6 |
@@ -105,7 +105,6 @@ venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
poetry.lock
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
|
||||
Vendored
+2
@@ -3,6 +3,8 @@
|
||||
"aiofiles",
|
||||
"autofilled",
|
||||
"blurple",
|
||||
"CAKEDAY",
|
||||
"cakedays",
|
||||
"CLANLEADER",
|
||||
"Dakiny",
|
||||
"DISCORDMANAGER",
|
||||
|
||||
+1
-1
@@ -14,6 +14,6 @@ COPY classes classes/
|
||||
COPY cogs cogs/
|
||||
COPY database_setup database_setup/
|
||||
|
||||
RUN pip install --upgrade pip && pip install poetry && poetry export -f requirements.txt --output requirements.txt && pip install -r requirements.txt
|
||||
RUN pip install --upgrade pip && pip install poetry==1.8.3 && poetry export -f requirements.txt --output requirements.txt && pip install -r requirements.txt
|
||||
|
||||
CMD ["python3", "-u", "./main.py"]
|
||||
+1
-1
@@ -200,7 +200,7 @@ class Election:
|
||||
election_thread: nextcord.Thread = self.guild.get_thread(self.get_election_info().ThreadId)
|
||||
await election_thread.send(message)
|
||||
vote_msg = await election_thread.send(
|
||||
build_votes_str(settings, self.guild),
|
||||
build_votes_str(self.guild),
|
||||
view=VoteView(self.guild),
|
||||
)
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ class VoteSelect(nextcord.ui.StringSelect):
|
||||
session.execute(stmt)
|
||||
session.commit()
|
||||
|
||||
vote_message_str = build_votes_str(settings, interaction.guild)
|
||||
vote_message_str = build_votes_str(interaction.guild)
|
||||
vote_msg: nextcord.Message = await interaction.channel.fetch_message(vote_msg_id)
|
||||
await vote_msg.edit(content=vote_message_str)
|
||||
|
||||
|
||||
@@ -154,7 +154,7 @@ class EventView(nextcord.ui.View):
|
||||
"""
|
||||
|
||||
def __init__(self, name: str, host_id: int):
|
||||
super().__init__()
|
||||
super().__init__(timeout=60 * 60 * 2) # timeout 2 hours
|
||||
|
||||
self.name: str = name
|
||||
self.host_id: int = host_id
|
||||
|
||||
+24
-5
@@ -215,6 +215,7 @@ class ViewCog(commands.Cog, name="View Commands"):
|
||||
await interaction.response.send_autocomplete(autofilled_elections[:25])
|
||||
|
||||
@event_points.on_autocomplete("quarter_name")
|
||||
@clan_points.on_autocomplete("quarter_name")
|
||||
async def event_points_autocomplete(self, interaction: nextcord.Interaction, quarter_name: str) -> None:
|
||||
"""
|
||||
Collects all elections that start with the election string.
|
||||
@@ -263,16 +264,34 @@ def create_points_string(interaction: nextcord.Interaction, quarters: any, point
|
||||
sorted_non_members = None
|
||||
sorted_members = members.sort_values(
|
||||
by="UserId",
|
||||
key=lambda user_ids: (
|
||||
[interaction.guild.get_member(int(user_id)).display_name.lower() for user_id in user_ids]
|
||||
),
|
||||
key=lambda user_ids: ([member_lambda_string(interaction.guild, user_id) for user_id in user_ids]),
|
||||
)
|
||||
sorted_all = pd.concat([sorted_members, sorted_non_members], ignore_index=True, sort=False)
|
||||
for row in sorted_all.itertuples():
|
||||
userid = row.UserId
|
||||
points = row.EventPoints if point_type == PointType.EVENT else row.ClanPoints
|
||||
discord_member = row.DiscordMember
|
||||
if points > 0:
|
||||
content += f"<@{userid}>: {points}\n" if discord_member else f"{userid}: {points}\n"
|
||||
content += f"<@{row.UserId}>: {points}\n" if discord_member else f"{row.UserId}: {points}\n"
|
||||
content += "\n"
|
||||
return content
|
||||
|
||||
|
||||
def member_lambda_string(guild: nextcord.Guild, user_id: int) -> str:
|
||||
"""
|
||||
Finds a user in a guild and returns the display name.
|
||||
|
||||
Returns the user id in string form if user is no longer in guild.
|
||||
I don't know if I like this name very much.
|
||||
|
||||
Args:
|
||||
guild (nextcord.Guild): Guild object to find the user in.
|
||||
user_id (int): User id to get display name of.
|
||||
|
||||
Returns:
|
||||
str: String to use for sorting.
|
||||
"""
|
||||
try:
|
||||
return guild.get_member(int(user_id)).display_name.lower()
|
||||
except AttributeError:
|
||||
# The user is no longer a part of the guild
|
||||
return str(user_id)
|
||||
|
||||
@@ -20,6 +20,8 @@ if TYPE_CHECKING:
|
||||
|
||||
KANDY = 239547993106284544
|
||||
|
||||
IGNORE_CAKEDAY = [266378407682506754]
|
||||
|
||||
|
||||
class DailyLoop(commands.Cog, name="Daily Loop"):
|
||||
"""Class for performing daily functions."""
|
||||
@@ -112,7 +114,11 @@ class DailyLoop(commands.Cog, name="Daily Loop"):
|
||||
announce_channel: nextcord.TextChannel = guild.get_channel(settings.channel_ids.general)
|
||||
|
||||
cakedays: list[nextcord.Member] = [
|
||||
human for human in guild.humans if human.joined_at.month == today.month and human.joined_at.day == today.day
|
||||
human
|
||||
for human in guild.humans
|
||||
if human.joined_at.month == today.month
|
||||
and human.joined_at.day == today.day
|
||||
and human.id not in IGNORE_CAKEDAY
|
||||
]
|
||||
|
||||
for member in cakedays:
|
||||
|
||||
Generated
+2006
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"lockFileMaintenance": {
|
||||
"automerge": true,
|
||||
"enabled": true
|
||||
},
|
||||
"minor": {
|
||||
"automerge": true,
|
||||
"automergeType": "branch"
|
||||
},
|
||||
"patch": {
|
||||
"automerge": true,
|
||||
"automergeType": "branch"
|
||||
},
|
||||
"pin": {
|
||||
"automerge": true,
|
||||
"automergeType": "branch"
|
||||
},
|
||||
"ignoreTests": true
|
||||
}
|
||||
Reference in New Issue
Block a user