async def remove(self, ctx, subject=None, id: int = None): """Remove review from DB. User is just allowed to remove his own review For admin it is possible to use 'id' as subject shorcut and delete review by its ID """ if not await self.check_member(ctx): return if subject is None: if utils.is_bot_admin(ctx): await ctx.send(messages.review_remove_format_admin) else: await ctx.send(messages.review_remove_format) elif subject == "id": if utils.is_bot_admin(ctx): if id is None: await ctx.send(messages.review_remove_id_format) else: review_repo.remove(id) await ctx.send(messages.review_remove_success) else: await ctx.send(utils.fill_message("insufficient_rights", user=ctx.author.id)) else: subject = subject.lower() if self.rev.remove(str(ctx.message.author.id), subject): await ctx.send(messages.review_remove_success) else: await ctx.send(messages.review_remove_error)
def remove(self, author, subject): """Remove review from DB""" result = review_repo.get_review_by_author_subject(author, subject) if result: review_repo.remove(result.id) return True else: return False
async def reviews(self, ctx, subcommand=None, subject=None, tier: int = None, *args): if subcommand is None: await ctx.send(messages.review_format) else: for role in ctx.message.author.roles: if "MUNI" == role.name or "Host" == role.name: await ctx.send(messages.review_add_denied.format( user=ctx.message.author.mention)) return if subcommand == 'add': if subject is None or tier is None: await ctx.send(messages.review_add_format) return author = ctx.message.author.id anonym = False if tier < 0 or tier > 4: await ctx.send(messages.review_tier) return if args: if args[0] == "anonym": anonym = True args = args[1:] args = ' '.join(args) args_len = len(args) if args_len == 0: args = None try: self.rev.add_review(author, subject, tier, anonym, args) except: await ctx.send(messages.review_wrong_subject) return await ctx.send(messages.review_added) elif subcommand == 'remove': if subject is None: await ctx.send(messages.review_remove_format) elif subject == 'id': if ctx.author.id == config.admin_id: if tier is None: await ctx.send(messages.review_remove_id_format) else: review_repo.remove(tier) await ctx.send(messages.review_remove_success) else: await ctx.send(messages.insufficient_rights.format( user=utils.generate_mention(ctx.author.id))) else: if self.rev.remove(str(ctx.message.author.id), subject): await ctx.send(messages.review_remove_success) else: await ctx.send(messages.review_remove_error) else: subject = subcommand embed = self.rev.list_reviews(subject.lower()) if not embed: await ctx.send(messages.review_wrong_subject) return msg = await ctx.send(embed=embed) if msg.embeds[0].description[-1].isnumeric(): await msg.add_reaction("⏪") await msg.add_reaction("◀") await msg.add_reaction("▶") await msg.add_reaction("👍") await msg.add_reaction("🛑") await msg.add_reaction("👎") if msg.embeds[0].fields[3].name == "Text page": await msg.add_reaction("🔼") await msg.add_reaction("🔽")
async def reviews(self, ctx, subcommand=None, subject=None, tier: int = None, *args): if subcommand is None: await ctx.send(messages.review_format) else: if isinstance(ctx.message.channel, discord.DMChannel): guild = self.bot.get_guild(config.guild_id) roles = guild.get_member(ctx.message.author.id).roles else: roles = ctx.message.author.roles if subcommand == 'add': for role in roles: if role.name in config.reviews_forbidden_roles: await ctx.send( messages.review_add_denied.format( user=ctx.message.author.mention)) return if subject is None or tier is None: await ctx.send(messages.review_add_format) return author = ctx.message.author.id anonym = False if tier < 0 or tier > 4: await ctx.send(messages.review_tier) return if args: if args[0] == "anonym": anonym = True args = args[1:] args = ' '.join(args) args_len = len(args) if args_len == 0: args = None try: self.rev.add_review(author, subject, tier, anonym, args) except: await ctx.send(messages.review_wrong_subject) return await ctx.send(messages.review_added) elif subcommand == 'remove': if subject is None: await ctx.send(messages.review_remove_format) elif subject == 'id': if ctx.author.id == config.admin_id: if tier is None: await ctx.send(messages.review_remove_id_format) else: review_repo.remove(tier) await ctx.send(messages.review_remove_success) else: await ctx.send( messages.insufficient_rights.format( user=utils.generate_mention(ctx.author.id))) else: if self.rev.remove(str(ctx.message.author.id), subject): await ctx.send(messages.review_remove_success) else: await ctx.send(messages.review_remove_error) else: subject = subcommand embed = self.rev.list_reviews(subject.lower()) if not embed: await ctx.send(messages.review_wrong_subject) return msg = await ctx.send(embed=embed) footer = msg.embeds[0].footer.text.split('|')[0] if msg.embeds[0].description[-1].isnumeric(): if footer != "Review: 1/1 ": await msg.add_reaction("⏪") await msg.add_reaction("◀") await msg.add_reaction("▶") await msg.add_reaction("👍") await msg.add_reaction("🛑") await msg.add_reaction("👎") if msg.embeds[0].fields[3].name == "Text page": await msg.add_reaction("🔼") await msg.add_reaction("🔽")