async def now_(self, ctx): channel_check(ctx) await ctx.message.delete() d = data_read(ctx.guild) d['now'] = not d['now'] data_write(ctx.guild, d) await ctx.send(f'Настройка `сейчас играет` изменена на [ {int(d["now"])} ] :thumbsup:', delete_after=20)
async def change_gender(self, ctx): try: channel_check(ctx) except ChannelException as error: await error.do(ctx) return user = ctx.message.author d = data_read(ctx.guild) if d['genders']: role1 = discord.utils.get(user.guild.roles, id=d['genders'][0]) role2 = discord.utils.get(user.guild.roles, id=d['genders'][1]) if role1 is None or role2 is None: await ctx.message.delete() await ctx.send(f'Упс! Кажется кто-то из админов сервера удалил роли. Попроси ' f'`{ctx.guild.owner.name}` поставить их заново :cowboy:', delete_after=40) if role1.name in [r.name for r in user.roles]: await user.remove_roles(role1) await user.add_roles(role2) else: await user.remove_roles(role2) await user.add_roles(role1) await ctx.message.delete() await ctx.send(f'{user.mention}, ты изменил свою гендерную роль :sunglasses:', delete_after=3) else: ctx.send('К сожалению, владелец сервера не назначили роли для гендерного распределения :weary:')
async def server_help_(self, ctx): try: channel_check(ctx) except ChannelException as error: await error.do(ctx) return embed = discord.Embed( colour=discord.Colour.from_rgb(r=30, g=144, b=255), description=':fox:`.set_roles` - создам закрепленный пост, с помощью которого участники сервера ' 'смогут сами выбирать себе роли всего по клику на Эмодзи. Для этого содержимое сообщения должно' ' быть такого вида: `.set_roles @<упоминание роли> <любое Эмодзи> \"<Описание>\"`. Описание ' 'роли по желанию, количество ролей неограничено. *Убедись в настройках сервера что моя роль* ' '*расположена выше всех ролей в сообщении, таковы требования Дискорда.*\n' ':male_sign:`.set_genders` - устанавлю связь между половыми ролями и участниками ' 'сервера. В качестве аргумента передай либо упоминания 2-х ролей при условии что моя роль выше ' 'их обоих, либо 2 слова, которые запустят процесс создания новых ролей с соответствующими им ' 'наименованиям. Можешь вообще не передавать ничего и тогда новые роли будут выглядеть так: ' '♂ и ♀. *Порядок аргументов всегда такой: сначала для мужской роли, затем для женской*\n' ':shield:`.channels` - определю для себя на каких текстовых каналах я могу вести ' 'работу, а на каких нет. Для этого передай через пробел список разрешённых каналов (с помощью ' '\'#\'), либо не передавай ничего, и тогда список запрещённых для меня каналов станет пустым.\n' ':arrows_counterclockwise:`.edit.notice` - по умолчанию, когда участник сервера покидает ' 'голосовой канал - я присылаю уведомление о времени его пребывания на данном канале. Эту опцию ' 'можно менять сколько угодно раз с помощью этой команды.\n' ':arrows_counterclockwise:`.edit.now` - по умолчанию, когда начинает играть новая песня - я ' 'пишу название этой песни. Эту опцию можно менять сколько угодно раз с помощью этой команды.\n' ':five:`.edit.count` - по умолчанию, после поиска музыки показываются лишь первые 5 совпадений.' ' Ты можешь изменить это количество на любое число от 5 до 10 включительно.' ) embed.set_author(name='Серверные команды', icon_url='https://cdn.discordapp.com/avatars/' '669163733473296395/89d3cf65e539aaba9e6d1669d32b1ea7.webp?size=1024') await ctx.send(embed=embed, delete_after=3600)
async def notice_(self, ctx): channel_check(ctx) await ctx.message.delete() d = data_read(ctx.guild) d['notice'] = not d['notice'] data_write(ctx.guild, d) await ctx.send(f'Настройка `участник покинул канал` изменена на [ {int(d["notice"])} ] :thumbsup:', delete_after=20)
async def count_(self, ctx, *, n: int): channel_check(ctx) await ctx.message.delete() d = data_read(ctx.guild) if n < 5 or n > 10: raise commands.errors.BadArgument d['count'] = n data_write(ctx.guild, d) await ctx.send(f'Настройка `количество записей` изменена на [ {n} ] :thumbsup:', delete_after=20)
async def github_(self, ctx): try: channel_check(ctx) except ChannelException as error: await error.do(ctx) return await ctx.send( ':house: мой домик: https://github.com/gitSunic/flex-bot', delete_after=40) await mcm(ctx)
async def clear_(self, ctx, n='all'): try: channel_check(ctx) except ChannelException as error: await error.do(ctx) return if n != 'all': try: await ctx.channel.purge(limit=int(n) + 1) except ValueError: await ctx.send(f'Не удалось распознать число `{n}`') else: await ctx.channel.purge(limit=100)
async def get_avatar(self, ctx, *members: discord.Member): try: channel_check(ctx) except ChannelException as error: await error.do(ctx) return await ctx.message.delete() if not members: members = [ctx.message.author] for member in members: embed = discord.Embed(color=member.color) embed.set_image(url=member.avatar_url) await ctx.send(embed=embed)
async def random(self, ctx, q): try: channel_check(ctx) except ChannelException as error: await error.do(ctx) return try: a, b = map(int, q.split('-')) await ctx.send( f'{ctx.message.author.mention} твоё случайное ' f'число от {a} до {b}: **{random.randint(a, b)}**', delete_after=40) except ValueError: await ctx.send(f'Ты неправильно ввел{postix(ctx)} данные :sweat:', delete_after=10) except commands.errors.MissingRequiredArgument: await ctx.send('Укажи границы :sweat:', delete_after=10)
async def person_help_(self, ctx): try: channel_check(ctx) except ChannelException as error: await error.do(ctx) return await ctx.message.delete() embed = discord.Embed( colour=discord.Colour.from_rgb(r=30, g=144, b=255), description=':cat:`.g`,`.change_gender` - если пол, который я выдала тебе автоматически, тебя не ' 'устраивает, ты можешь его сам поменять.\n' ':stars:`.ava` - пришлю фотку твоей аватарки, или аватарки любого другого участника сервера, ' 'главное не забудь отметить его в сообщении' ) embed.set_author(name='Персональные команды', icon_url='https://cdn.discordapp.com/avatars/' '669163733473296395/89d3cf65e539aaba9e6d1669d32b1ea7.webp?size=1024') await ctx.send(embed=embed, delete_after=3600)
async def bug_(self, ctx, *, msg: str): try: channel_check(ctx) except ChannelException as error: await error.do(ctx) return if ctx.message.author.id in self.bugs: await ctx.send( f'Прости `{ctx.message.author.name}` но отправка сообщений такого рода не ' f'должна быть чаще 1 раза в минуту :clock1:', delete_after=10) else: user = await self.client.fetch_user(me) await user.send( f'сервер: {ctx.guild.name}\nавтор: {ctx.message.author.mention}\nтекст: {msg}' ) await ctx.send( f'`{ctx.message.author.name}` спасибо за помощь в разработке :diving_mask: ', delete_after=20) await mcm(ctx)
async def extra_help_(self, ctx): try: channel_check(ctx) except ChannelException as error: await error.do(ctx) return await ctx.message.delete() embed = discord.Embed( colour=discord.Colour.from_rgb(r=30, g=144, b=255), description= f':broom:`.clear` - удалю последние *n* сообщений на канале, но не более 100 за раз!\n' f':beetle:`.bug` - если ты найдешь какие-то значимы ошибки в моей работе, обязательно ' f'отправь их мне при помощи этой команды.\n' f':house:`.git` - мой домик (открытый код)') embed.set_author( name='Дополнительные команды', icon_url='https://cdn.discordapp.com/avatars/' '669163733473296395/89d3cf65e539aaba9e6d1669d32b1ea7.webp?size=1024' ) await ctx.send(embed=embed, delete_after=3600)
async def enter_help_(self, ctx): try: channel_check(ctx) except ChannelException as error: await error.do(ctx) return embed = discord.Embed( colour=discord.Colour.from_rgb(r=30, g=144, b=255), description= ':game_die:`.e.r`,`.random` - передай вместе с командой строку в виде ' '`a-b` и я выберу случайное число от *a* до *b* включительно. ' '*a и b - целые числа*\n' ':arrow_up:`.e.u`,`.upload` - отправь с командой картинку и получи короткую ссылку на нее' ) embed.set_author( name='Развлекательные команды', icon_url='https://cdn.discordapp.com/avatars/' '669163733473296395/89d3cf65e539aaba9e6d1669d32b1ea7.webp?size=1024' ) await ctx.send(embed=embed, delete_after=3600)