From 153ebcbe3708d2430cdf35910ec7d202acfc5110 Mon Sep 17 00:00:00 2001 From: Conatum Date: Wed, 19 Jan 2022 15:08:27 +0200 Subject: [PATCH] (topgg): Minor linting and wording changes. --- bot/modules/topgg/commands.py | 28 ++++++++++++++------------ bot/modules/topgg/module.py | 11 +++++----- bot/modules/topgg/settings.py | 5 +++-- bot/modules/topgg/utils.py | 38 +++++++++++++++++++++++++---------- bot/modules/topgg/webhook.py | 16 +++++++++------ 5 files changed, 60 insertions(+), 38 deletions(-) diff --git a/bot/modules/topgg/commands.py b/bot/modules/topgg/commands.py index 9bb63cd8..af2a9c3d 100644 --- a/bot/modules/topgg/commands.py +++ b/bot/modules/topgg/commands.py @@ -1,29 +1,30 @@ import discord from .module import module from wards import guild_admin -from bot.cmdClient.checks.global_perms import in_guild +from bot.cmdClient.checks import in_guild, is_owner from settings.user_settings import UserSettings from .webhook import on_dbl_vote -from .utils import * +from .utils import lion_loveemote + @module.cmd( "forcevote", - desc="Simulate Topgg Vote.", - group="Guild Admin", - aliases=('debugvote', 'topggvote') + desc="Simulate a Topgg Vote from the given user.", + group="Bot Admin", ) -@guild_admin() +@is_owner() async def cmd_forcevote(ctx): """ Usage``: {prefix}forcevote Description: - Simulate Topgg Vote without actually a confirmation from Topgg site. + Simulate Top.gg vote without actually a confirmation from Topgg site. Can be used for force a vote for testing or if topgg has an error or production time bot error. """ target = ctx.author + # Identify the target if ctx.args: if not ctx.msg.mentions: @@ -36,7 +37,7 @@ async def cmd_forcevote(ctx): @module.cmd( "vote", - desc="Get top.gg boost for 25% more LCs.", + desc="[Vote](https://top.gg/bot/889078613817831495/vote) for me to get 25% more LCs!", group="Economy", aliases=('topgg', 'topggvote', 'upvote') ) @@ -48,11 +49,12 @@ async def cmd_vote(ctx): Description: Get Top.gg bot's link for +25% Economy boost. """ - target = ctx.author - - embed=discord.Embed( + embed = discord.Embed( title="Claim your boost!", - description='Please click [here](https://top.gg/bot/889078613817831495/vote) vote and support our bot!\n\nThank you! {}.'.format(lion_loveemote), + description=( + "Please click [here](https://top.gg/bot/889078613817831495/vote) to vote and support our bot!\n\n" + "Thank you! {}.".format(lion_loveemote) + ), colour=discord.Colour.orange() ).set_thumbnail( url="https://cdn.discordapp.com/attachments/908283085999706153/933012309532614666/lion-love.png" @@ -72,5 +74,5 @@ async def cmd_remind_vote(ctx): `{prefix}vote_reminder off` Enable or disable DM boost reminders. - """ + """ await UserSettings.settings.vote_remainder.command(ctx, ctx.author.id) diff --git a/bot/modules/topgg/module.py b/bot/modules/topgg/module.py index 4a88f814..2c9f32d5 100644 --- a/bot/modules/topgg/module.py +++ b/bot/modules/topgg/module.py @@ -1,31 +1,30 @@ -from multiprocessing import context from LionModule import LionModule from LionContext import register_reply_callback, unregister_reply_callback -from bot.data.conditions import NOT -from meta.client import client from core.lion import Lion -from .utils import * +from .utils import get_last_voted_timestamp, lion_loveemote, lion_yayemote from .webhook import init_webhook module = LionModule("Topgg") upvote_info = "You have a boost available {}, to support our project and earn **25% more LionCoins** type `{}vote` {}" + @module.launch_task async def register_hook(client): init_webhook() register_reply_callback(reply) Lion.register_economy_bonus(economy_bonus) - client.log("Registered LionContext reply util hook.", context="Topgg" ) + client.log("Registered LionContext reply util hook.", context="Topgg") + @module.unload_task async def unregister_hook(client): unregister_reply_callback(reply) Lion.unregister_economy_bonus(economy_bonus) - client.log("Unregistered LionContext reply util hook.", context="Topgg" ) + client.log("Unregistered LionContext reply util hook.", context="Topgg") def reply(util_func, *args, **kwargs): diff --git a/bot/modules/topgg/settings.py b/bot/modules/topgg/settings.py index 2686bc02..52cdcdf5 100644 --- a/bot/modules/topgg/settings.py +++ b/bot/modules/topgg/settings.py @@ -4,7 +4,8 @@ from settings.setting_types import Boolean from modules.reminders.reminder import Reminder from modules.reminders.data import reminders -from .utils import * +from .utils import create_remainder, remainder_content + @UserSettings.attach_setting class topgg_vote_remainder(Boolean, UserSetting): @@ -42,4 +43,4 @@ class topgg_vote_remainder(Boolean, UserSetting): return ( " I won't send you boost reminders." - ) \ No newline at end of file + ) diff --git a/bot/modules/topgg/utils.py b/bot/modules/topgg/utils.py index 233c61b1..cb801e50 100644 --- a/bot/modules/topgg/utils.py +++ b/bot/modules/topgg/utils.py @@ -12,24 +12,33 @@ from . import data as db from data.conditions import GEQ topgg_upvote_link = 'https://top.gg/bot/889078613817831495/vote' -remainder_content = "You can now vote again on top.gg!\nClick [here]({}) to vote, thank you for the support!".format(topgg_upvote_link) +remainder_content = ( + "You can now vote again on top.gg!\n" + "Click [here]({}) to vote, thank you for the support!" +).format(topgg_upvote_link) lion_loveemote = '<:lionloveemote:933003977656795136>' lion_yayemote = '<:lionyayemote:933003929229352990>' -# Will return None if user has not voted in [-12.5hrs till now] -# else will return a Tuple containing timestamp of when exactly she voted + def get_last_voted_timestamp(userid: Integer): + """ + Will return None if user has not voted in [-12.5hrs till now] + else will return a Tuple containing timestamp of when exactly she voted + """ return db.topggvotes.select_one_where( userid=userid, - select_columns="boostedTimestamp", + select_columns="boostedTimestamp", boostedTimestamp=GEQ(datetime.datetime.utcnow() - datetime.timedelta(hours=12.5)), _extra="ORDER BY boostedTimestamp DESC LIMIT 1" ) -# Checks if a remainder is already running (immaterial of remind_at time) -# If no remainder exists creates a new remainder and schedules it + def create_remainder(userid): + """ + Checks if a remainder is already running (immaterial of remind_at time) + If no remainder exists creates a new remainder and schedules it + """ if not reminders.select_one_where( userid=userid, content=remainder_content, @@ -46,10 +55,14 @@ def create_remainder(userid): interval=None, title="Your boost is now available! {}".format(lion_yayemote), footer="Use `{}vote_reminder off` to stop receiving reminders.".format(client.prefix), - remind_at=last_vote_time[0] + datetime.timedelta(hours=12.5) if last_vote_time else datetime.datetime.utcnow() + datetime.timedelta(minutes=5) + remind_at=( + last_vote_time[0] + datetime.timedelta(hours=12.5) + if last_vote_time else + datetime.datetime.utcnow() + datetime.timedelta(minutes=5) + ) # remind_at=datetime.datetime.utcnow() + datetime.timedelta(minutes=2) ) - + # Schedule reminder if sharding.shard_number == 0: reminder.schedule() @@ -64,10 +77,13 @@ async def send_user_dm(userid): pass if user: try: - embed=discord.Embed( + embed = discord.Embed( title="Thank you for supporting our bot on Top.gg! {}".format(lion_yayemote), - description="By voting every 12 hours you will allow us to reach and help even more students all over the world.\n \ - Thank you for supporting us, enjoy your LionCoins boost!", + description=( + "By voting every 12 hours you will allow us to reach and help " + "even more students all over the world.\n" + "Thank you for supporting us, enjoy your LionCoins boost!" + ), colour=discord.Colour.orange() ).set_image( url="https://cdn.discordapp.com/attachments/908283085999706153/932737228440993822/lion-yay.png" diff --git a/bot/modules/topgg/webhook.py b/bot/modules/topgg/webhook.py index eb0eb1c5..d26cdd80 100644 --- a/bot/modules/topgg/webhook.py +++ b/bot/modules/topgg/webhook.py @@ -4,7 +4,8 @@ from utils.lib import utc_now from meta.config import conf import topgg -from .utils import * +from .utils import db, send_user_dm, create_remainder + @client.event async def on_dbl_vote(data): @@ -13,17 +14,17 @@ async def on_dbl_vote(data): db.topggvotes.insert( userid=data['user'], - boostedTimestamp = utc_now() + boostedTimestamp=utc_now() ) await send_user_dm(data['user']) - + if UserSettings.settings.vote_remainder.value: create_remainder(data['user']) if data["type"] == "test": return client.dispatch("dbl_test", data) - + @client.event async def on_dbl_test(data): @@ -32,5 +33,8 @@ async def on_dbl_test(data): def init_webhook(): - client.topgg_webhook = topgg.WebhookManager(client).dbl_webhook(conf.bot.get("topgg_route"), conf.bot.get("topgg_password")) - client.topgg_webhook.run(conf.bot.get("topgg_port")) + client.topgg_webhook = topgg.WebhookManager(client).dbl_webhook( + conf.bot.get("topgg_route"), + conf.bot.get("topgg_password") + ) + client.topgg_webhook.run(conf.bot.get("topgg_port"))