-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8871e25
commit 58e44ae
Showing
18 changed files
with
304 additions
and
94 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
import disnake | ||
from disnake.ext import commands | ||
|
||
|
||
|
||
class helpc(commands.Cog): | ||
def __init__(self, bot): | ||
self.bot = bot | ||
|
||
|
||
@commands.slash_command(name="help", description="Помощь по командам.", permissions=[disnake.Permissions().none()]) | ||
async def __help(self, ctx): | ||
view = design_help_cmd() | ||
embed = disnake.Embed(title=f'**__Список команд__**', description='Пожалуйста, выберите категорию.', color=disnake.Color.green()) | ||
embed.set_footer(text=f"Запросил команду: {ctx.author.name}") | ||
await ctx.send(embed=embed, view=view, ephemeral=True) | ||
|
||
|
||
class design_help_cmd(disnake.ui.View): | ||
def __init__(self): | ||
super().__init__() | ||
self.add_item(help_cmd()) | ||
|
||
class help_cmd(disnake.ui.Select): | ||
def __init__(self): | ||
options = [ | ||
disnake.SelectOption(label='Развлечения', description='Куча весёлостей и развлечений!', emoji='<:fun:1004671040116490300>'), | ||
disnake.SelectOption(label='Модерация', description='Команды для модераторов / Администрации.', emoji='<:moderator:1004670538758754445>'), | ||
disnake.SelectOption(label='Глобальный чат', description='Общение с разнами серверами через бота.', emoji='<:chat:992097506748010656>'), | ||
disnake.SelectOption(label='Общее', description='Общие команды для обычных юзеров.', emoji='<:all:1004659237336657972>'), | ||
disnake.SelectOption(label='Животные', description='Изображение животных.', emoji='<:animals:1004669831217422417>'), | ||
disnake.SelectOption(label='NSFW', description='18+ изображение', emoji='<:18:1004669364705955852>'), | ||
disnake.SelectOption(label='Информация', description='Полезные команды', emoji='<:info:992096997500780574>'), | ||
disnake.SelectOption(label='Premium', description='Покупка подписки', emoji='💲'), | ||
disnake.SelectOption(label='Экономика', description='Команды для экономики', emoji='💰'), | ||
] | ||
super().__init__(placeholder='Выбор категории', min_values=1, max_values=1, options=options) | ||
|
||
async def callback(self, interaction: disnake.Interaction): | ||
if "Развлечения" in self.values: | ||
embed = disnake.Embed(color=disnake.Color.yellow()) | ||
embed.add_field(name='Развлечения', value=( | ||
'`/gay` > в разработке...\n' | ||
'`/chill` > Узнать размер члена! 😌\n' | ||
)) | ||
await interaction.response.edit_message(embed=embed) | ||
if "Модерация" in self.values: | ||
embed = disnake.Embed(color=disnake.Color.blurple()) | ||
embed.add_field(name='Модерация', value=( | ||
'`/clear` > Очистка чата\n' | ||
'`/embed` > Эмбед от имени бота\n' | ||
'`/poll` > Голосование\n' | ||
'`/kick` > Выгнать пользователя с сервера 😠\n' | ||
'`/ban` > Забанить пользователя на сервере 🚫\n' | ||
'`/join` > Зайти в голосовой канал 🎤\n' | ||
'`/leave` > Выйти из голосового канала 🎙️\n' | ||
'`/echo` > Отправить сообщение от имени Полины 📢\n' | ||
'`/stay` > Оставить Полину в голосовом канале 🙏\n' | ||
'`/create_role` > Создание новой роли 🛠️\n' | ||
'`/assign_role` > Выдача роли пользователю 🤝\n' | ||
'`/setroleap` > Установить роль для Автовыдачи 👥\n' | ||
'`/remove_role` > Удаление роли у пользователя ❌\n' | ||
'`/warns` > Выдать предупреждение пользователю ⚠️\n' | ||
'`/unwarn` > Снять предупреждение у пользователя 💚\n' | ||
'`/setcolorrole` > Изменить цвет роли 🌈\n' | ||
'`/voting` > Провести голосование 🗳️ \n' | ||
'`/send-dm` > Отправить в лс сообщение от имени бота 💬\n' | ||
'`/voicemute` > Mute пользователя в голосовых каналах 😶\n' | ||
'`/unvoicemute` > unMute пользователя в голосовых каналах🎙️\n' | ||
)) | ||
await interaction.response.edit_message(embed=embed) | ||
if "Глобальный чат" in self.values: | ||
embed = disnake.Embed(color=disnake.Color.purple()) | ||
embed.add_field(name='Общее', value=( | ||
'`/global` > в разработке...\n' | ||
)) | ||
await interaction.response.edit_message(embed=embed) | ||
if "Общее" in self.values: | ||
embed = disnake.Embed(color=disnake.Color.blue()) | ||
embed.add_field(name='Общее', value=( | ||
'`/help` > Посмотреть все команды 👀\n' | ||
'`/daily` > Получить ежедневные Poli-coins 💰\n' | ||
'`/balance` > Показать баланс 💵\n' | ||
'`/dice` > Играть в Dice 🎲\n' | ||
'`/user_agreement` > Пользовательское соглашение 📜\n' | ||
'`/profile` > Узнать свою статистику 📊\n' | ||
'`/calculate` > Открыть калькулятор 🧮\n' | ||
'`/level` > Узнать свой уровень 📈\n' | ||
'`/warnings` > Показать список предупреждений ⚠️\n' | ||
'`/avatar` > Посмотреть аватар пользователя 👤\n' | ||
'`/short` > Сократить URL-адрес 🔗\n' | ||
'`/server` > Просмотр информации о сервере 🖥️\n' | ||
'`/ping` > Проверка бота на работу 🏓\n' | ||
'`/nitro` > Генерирует Discord Nitro 🎁\n' | ||
'`/chat` > Спросить у ChatGPT 🤔\n' | ||
)) | ||
await interaction.response.edit_message(embed=embed) | ||
if "Животные" in self.values: | ||
embed = disnake.Embed(color=disnake.Color.green()) | ||
embed.add_field(name='Животные', value=( | ||
'`/dog` > в разработке...\n' | ||
)) | ||
await interaction.response.edit_message(embed=embed) | ||
if "NSFW" in self.values: | ||
embed = disnake.Embed(color=disnake.Color.red()) | ||
embed.add_field(name='NSFW', value=( | ||
'`/waifu` > 18+ картинки / GIF 🍑\n' | ||
'`/blowjob` > 18+ картинки / GIF 🍆\n' | ||
'`/trap` > 18+ картинки / GIF 🚻\n' | ||
'`/neko` > 18+ картинки / GIF 😺\n' | ||
'`/sex` > 18+ картинки / GIF 🍌\n' | ||
'`/solo` > 18+ картинки / GIF 👄' | ||
)) | ||
await interaction.response.edit_message(embed=embed) | ||
if "Информация" in self.values: | ||
embed = disnake.Embed(color=disnake.Color.green()) | ||
embed.add_field(name='Информация', value=( | ||
'`/news` > в разработке...\n' | ||
)) | ||
await interaction.response.edit_message(embed=embed) | ||
if "Premium" in self.values: | ||
embed = disnake.Embed(color = disnake.Color.dark_theme()) | ||
embed.add_field(name='Premium', value=( | ||
'`/premium` > в разработке...\n' | ||
'`/buy-premium` > в разработке...\n' | ||
)) | ||
await interaction.response.edit_message(embed=embed) | ||
|
||
if "Экономика" in self.values: | ||
embed = disnake.Embed(color=disnake.Color.gold()) | ||
embed.add_field(name='Экономика', value=( | ||
'`/balance` > Показать баланс 💵\n' | ||
'`/daily` > Получить ежедневные Poli-coins 💰\n' | ||
'`/dice` > Играть в Dice 🎲\n' | ||
'`/buy` > Купить предмет из магазина (в разработке...) 🛍️\n' | ||
'`/sell` > Продать предмет из инвентаря (в разработке...)💸\n' | ||
'`/inventory` > Показать инвентарь (в разработке...)🎒\n' | ||
'`/leaderboard` > Показать топ пользователей по балансу(в разработке...) 🏆\n' | ||
)) | ||
await interaction.response.edit_message(embed=embed) | ||
|
||
def setup(bot): | ||
bot.add_cog(helpc(bot)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,145 @@ | ||
import disnake | ||
from disnake.ext import commands | ||
import sqlite3 | ||
import asyncio | ||
import aiohttp | ||
import datetime | ||
|
||
class mute(commands.Cog): | ||
def __init__(self, bot): | ||
self.bot = bot | ||
self.conn = sqlite3.connect('database.db') | ||
self.cursor = self.conn.cursor() | ||
self.create_table() | ||
|
||
def create_table(self): | ||
self.cursor.execute('''CREATE TABLE IF NOT EXISTS mutes | ||
(user_id INT PRIMARY KEY, unmute_time INT)''') | ||
self.conn.commit() | ||
|
||
@commands.slash_command(name='voicemute', description='Mute пользователя в голосовых каналах') | ||
@commands.has_permissions(manage_roles=True) | ||
async def tempmute(self, ctx, member: disnake.Member, duration: int, reason=None): | ||
mute_role = disnake.utils.get(ctx.guild.roles, name="mute") | ||
if not mute_role: | ||
mute_role = await ctx.guild.create_role(name="mute") | ||
|
||
permissions = disnake.Permissions.none() | ||
permissions.update(send_messages=False, connect=True, speak=True, stream=True, use_voice_activation=True) | ||
await mute_role.edit(permissions=permissions) | ||
|
||
await member.add_roles(mute_role, reason=reason) | ||
|
||
await self.mute_microphone(member, True) | ||
|
||
unmute_time = asyncio.get_event_loop().time() + duration * 60 | ||
|
||
self.cursor.execute('INSERT OR REPLACE INTO mutes VALUES (?, ?)', (member.id, unmute_time)) | ||
self.conn.commit() | ||
|
||
embed = disnake.Embed(title="Мут", color=0x7788ff) | ||
embed.add_field(name="Пользователь", value=member.mention, inline=True) | ||
embed.add_field(name="Длительность", value=f"{duration} минут", inline=True) | ||
embed.add_field(name="Причина", value=reason, inline=True) | ||
embed.set_footer(text=f"Размут через: {duration} минут ⏰") | ||
embed.set_footer(text="Polina bot © 2023 Все права защищены") | ||
|
||
await ctx.send(embed=embed, ephemeral=True) | ||
|
||
await self.send_mute_dm(member, ctx.guild.name, reason, duration, ctx.author) | ||
|
||
await asyncio.sleep(duration * 60) | ||
await self.unmute_member(member) | ||
|
||
@commands.slash_command(name='unvoicemute', description='unMute пользователя в голосовых каналах') | ||
@commands.has_permissions(manage_roles=True) | ||
async def unmute(self, ctx, member: disnake.Member): | ||
mute_role = disnake.utils.get(ctx.guild.roles, name="mute") | ||
if mute_role in member.roles: | ||
await member.remove_roles(mute_role) | ||
await self.unmute_member(member) | ||
|
||
embed = disnake.Embed(title="Размут", color=0x7788ff) | ||
embed.add_field(name="Пользователь", value=member.mention, inline=True) | ||
embed.set_footer(text="Был размучен 🎉") | ||
embed.set_footer(text="Polina bot © 2023 Все права защищены") | ||
|
||
await ctx.send(embed=embed, ephemeral=True) | ||
|
||
await self.send_unmute_dm(member) | ||
else: | ||
await ctx.send(f"{member.mention} не был mute.") | ||
|
||
self.cursor.execute('DELETE FROM mutes WHERE user_id = ?', (member.id,)) | ||
self.conn.commit() | ||
|
||
async def mute_microphone(self, member: disnake.Member, mute: bool): | ||
url = f"https://discord.com/api/v10/guilds/{member.guild.id}/members/{member.id}" | ||
headers = { | ||
"Authorization": f"Bot {self.bot.http.token}", | ||
"Content-Type": "application/json" | ||
} | ||
data = { | ||
"mute": mute | ||
} | ||
|
||
async with aiohttp.ClientSession() as session: | ||
async with session.patch(url, headers=headers, json=data) as response: | ||
if response.status == 204: | ||
return True | ||
else: | ||
return False | ||
|
||
async def unmute_member(self, member: disnake.Member): | ||
await self.mute_microphone(member, False) | ||
await self.send_unmute_dm(member) | ||
|
||
async def send_mute_dm(self, member, guild_name, reason, duration, admin): | ||
try: | ||
dm_channel = await member.create_dm() | ||
embed = disnake.Embed(title="Вы получили Mute", color=0x7788ff) | ||
embed.add_field(name="Сервер", value=guild_name, inline=True) | ||
embed.add_field(name="Причина", value=reason, inline=True) | ||
unmute_datetime = datetime.datetime.now() + datetime.timedelta(minutes=duration) | ||
embed.add_field(name="Дата и время размута", value=unmute_datetime.strftime("%Y-%m-%d %H:%M:%S"), inline=False) | ||
embed.add_field(name="Администратор", value=admin.name, inline=True) | ||
embed.set_footer(text="Вы будете размучены автоматически. 🕒") | ||
embed.set_footer(text="Polina bot © 2023 Все права защищены") | ||
await dm_channel.send(embed=embed) | ||
except Exception as e: | ||
print(f"Ошибка при отправке сообщения размута пользователю {member}: {e}") | ||
|
||
async def send_unmute_dm(self, member): | ||
try: | ||
dm_channel = await member.create_dm() | ||
embed = disnake.Embed(title="Вы размучены 🎉", color=0x7788ff) | ||
embed.add_field(name="Сервер", value=member.guild.name, inline=True) | ||
embed.set_footer(text="Вы размучены 🎉") | ||
embed.set_footer(text="Polina bot © 2023 Все права защищены") | ||
await dm_channel.send(embed=embed) | ||
except Exception as e: | ||
print(f"Ошибка при отправке сообщения размута пользователю {member}: {e}") | ||
|
||
@commands.Cog.listener() | ||
async def on_ready(self): | ||
current_time = asyncio.get_event_loop().time() | ||
for guild in self.bot.guilds: | ||
self.cursor.execute('SELECT * FROM mutes WHERE unmute_time <= ?', (current_time,)) | ||
mutes = self.cursor.fetchall() | ||
for mute in mutes: | ||
member = guild.get_member(mute[0]) | ||
if member: | ||
mute_role = disnake.utils.get(guild.roles, name="mute") | ||
if not mute_role: | ||
mute_role = await guild.create_role(name="mute") | ||
await member.remove_roles(mute_role) | ||
self.cursor.execute('DELETE FROM mutes WHERE user_id = ?', (member.id,)) | ||
self.conn.commit() | ||
|
||
|
||
|
||
|
||
|
||
|
||
def setup(bot): | ||
bot.add_cog(mute(bot)) |
Oops, something went wrong.