146 lines
4.5 KiB
Python
146 lines
4.5 KiB
Python
from typing import Optional
|
|
|
|
import discord
|
|
|
|
from meta import LionBot, conf
|
|
|
|
from . import babel
|
|
|
|
_p = babel._p
|
|
|
|
|
|
cmd_map = {
|
|
"cmd_my": "my",
|
|
"cmd_my_timezone": "my timezone",
|
|
"cmd_my_language": "my language",
|
|
"cmd_ranks": "ranks",
|
|
"cmd_leaderboard": "leaderboard",
|
|
"cmd_me": "me",
|
|
"cmd_stats": "stats",
|
|
"cmd_send": "send",
|
|
"cmd_shop": "shop open",
|
|
"cmd_room": "room rent",
|
|
"cmd_reminders": "reminders",
|
|
"cmd_tasklist": "tasklist",
|
|
"cmd_timers": "timers",
|
|
"cmd_schedule": "schedule",
|
|
"cmd_dashboard": "dashboard"
|
|
}
|
|
|
|
emojis = {
|
|
'config_emoji': conf.emojis.config,
|
|
'stats_emoji': conf.emojis.stats,
|
|
'coin': conf.emojis.coin,
|
|
'utility_emoji': conf.emojis.utility
|
|
}
|
|
|
|
|
|
member_study = _p(
|
|
'helptext|level:member|mode:study',
|
|
"""
|
|
{config_emoji} Personal Configuration
|
|
*View or adjust personal settings with the {cmd_my} command.*
|
|
{cmd_my_timezone}: Timezone used to display your stats and set reminders.
|
|
{cmd_my_language}: Your preferred language for commands and interactions.
|
|
|
|
|
|
{stats_emoji} Statistics
|
|
*Study in voice channels to earn activity ranks and compete on the leaderboard!*
|
|
{cmd_me}: View your personal study profile and set your profile tags.
|
|
{cmd_stats}: View study statistics for the current and past weeks or months.
|
|
{cmd_ranks}: See the list of activity ranks.
|
|
{cmd_leaderboard}: Compete with other members on the server leaderboards.
|
|
|
|
|
|
{coin} Economy
|
|
*Earn coins through studying, then spend them on some well deserved rewards!*
|
|
{cmd_send}: Send your {coin} to another member.
|
|
{cmd_shop}: Purchase server roles with your {coin}.
|
|
{cmd_room}: Rent a private voice channel for you and your friends.
|
|
|
|
|
|
{utility_emoji} Utilities
|
|
*Some other utilities to help you stay productive while studying!*
|
|
{cmd_reminders}: Ask me to remind you about that important task!
|
|
{cmd_tasklist}: Create tasks and feel the satisfaction of checking them off.
|
|
{cmd_timers}: Stay productive using the classic *pomodoro technique*!
|
|
{cmd_schedule}: Schedule a shared study session and keep yourself accountable!
|
|
"""
|
|
)
|
|
|
|
admin_extra = _p(
|
|
'helptext|page:admin',
|
|
"""
|
|
Use {cmd_dashboard} to see an overview of the server configuration, \
|
|
and quickly jump to the feature configuration panels to modify settings.
|
|
|
|
Most settings may also be directly set through the `/config` and `/admin config` commands, \
|
|
depending on whether the settings require moderator (manage server) or admin level permissions, respectively.
|
|
|
|
Other relevant commands for guild configuration below:
|
|
`/editshop`: Add/Edit/Remove colour roles from the {coin} shop.
|
|
`/ranks`: Add/Edit/Refresh/Remove activity ranks.
|
|
`/pomodoro`: Add/Edit/Remove Pomodoro timers in voice channels.
|
|
`/rolemenus`: Allow members to equip roles from customisable messages.
|
|
`/economy balance`: Display and modify LionCoin balance for members and roles.
|
|
"""
|
|
)
|
|
|
|
|
|
async def make_member_page(bot: LionBot, user: discord.User, guild: Optional[discord.Guild]) -> discord.Embed:
|
|
"""
|
|
Create the member-oriented help section, with user and optional guild context.
|
|
|
|
Takes into account the guild mode, if provided.
|
|
"""
|
|
t = bot.translator.t
|
|
|
|
mention_cmd = bot.core.mention_cmd
|
|
cmd_mentions = {
|
|
key: mention_cmd(name) for key, name in cmd_map.items()
|
|
}
|
|
format_args = {**emojis, **cmd_mentions}
|
|
|
|
# TODO: Take into account lguild mode
|
|
text = t(member_study).format(**format_args)
|
|
sections = text.split('\n\n\n')
|
|
|
|
embed = discord.Embed(
|
|
colour=discord.Colour.orange(),
|
|
title=t(_p(
|
|
'helptext|level:member|title',
|
|
"Command Summary (for members)"
|
|
))
|
|
)
|
|
for section in sections:
|
|
title, _, body = section.strip().partition('\n')
|
|
embed.add_field(name=title, value=body, inline=False)
|
|
|
|
return embed
|
|
|
|
|
|
async def make_admin_page(bot: LionBot, user: discord.User, guild: Optional[discord.Guild]) -> discord.Embed:
|
|
"""
|
|
Create the admin-oriented help section, with user or member context.
|
|
"""
|
|
t = bot.translator.t
|
|
|
|
mention_cmd = bot.core.mention_cmd
|
|
cmd_mentions = {
|
|
key: mention_cmd(name) for key, name in cmd_map.items()
|
|
}
|
|
format_args = {**emojis, **cmd_mentions}
|
|
|
|
text = t(admin_extra).format(**format_args)
|
|
|
|
embed = discord.Embed(
|
|
colour=discord.Colour.orange(),
|
|
title=t(_p(
|
|
'helptext|level:admin|title',
|
|
"Command Summary (for server admins)"
|
|
))
|
|
)
|
|
embed.description = text
|
|
|
|
return embed
|