-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain1.py
140 lines (110 loc) · 6.5 KB
/
main1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
"""MADE BY ANANS1K"""
import disnake
import aiosqlite
from disnake.ext import commands
intents = disnake.Intents.all()
intents.message_content = True
intents.members = True
bot = commands.Bot(command_prefix='!', intents=intents)
def get_db():
return aiosqlite.connect('punishment.db')
async def create_db():
async with aiosqlite.connect('punishment.db') as db:
await db.execute('''
CREATE TABLE IF NOT EXISTS warnings (
user_id INTEGER PRIMARY KEY,
username TEXT NOT NULL,
warnings_count INTEGER DEFAULT 0
)
''')
await db.commit()
async def add_warning(user_id: int, username: str):
async with get_db() as db:
async with db.execute("SELECT * FROM warnings WHERE user_id = ?", (user_id,)) as cursor:
user = await cursor.fetchone()
if user:
await db.execute("UPDATE warnings SET warnings_count = warnings_count + 1 WHERE user_id = ?", (user_id,))
else:
await db.execute("INSERT INTO warnings (user_id, username, warnings_count) VALUES (?, ?, ?)", (user_id, username, 1))
await db.commit()
async def get_warnings(user_id: int):
async with get_db() as db:
async with db.execute("SELECT warnings_count FROM warnings WHERE user_id = ?", (user_id,)) as cursor:
user = await cursor.fetchone()
if user:
return user[0]
else:
return 0
async def reset_warnings(user_id: int):
async with get_db() as db:
await db.execute("UPDATE warnings SET warnings_count = 0 WHERE user_id = ?", (user_id,))
await db.commit()
@bot.event
async def on_ready():
print(f"The bot started as {bot.user}")
await create_db()
@bot.command()
async def warn(ctx):
member = ctx.author
warnings_count = await get_warnings(member.id)
embed = disnake.Embed(
title='Варны',
description=f'У тебе есть {warnings_count} варнов',
color=disnake.Color.from_rgb(255,255,255)
)
await ctx.send(embed=embed)
@bot.slash_command(description='Выдать предупреждение пользователю')
@commands.has_permissions(moderate_members=True)
async def warn(ctx, member: disnake.Member, *, reason: str = "Не указано"):
await add_warning(member.id, member.name)
await ctx.send(f"{member.mention} получил предупреждение. Причина: {reason}")
@warn.error
async def warn_error(interaction, error):
if isinstance(error, disnake.ext.commands.MissingRole):
embed = disnake.Embed(
description=f'\n{interaction.author.mention}\n ** У вас нет прав для использования этой команды. ** \n >>> Если вы хотите получить эти права, попробуйте оставить заявку в наборе персонала.',
color=disnake.Color.from_rgb(0, 0, 0)
)
await interaction.response.send_message(embed=embed, ephemeral=True)
elif isinstance(error, disnake.ext.commands.BadArgument):
embed = disnake.Embed(
description=f'\n{interaction.author.mention}\n ** Ошибка! ** \n >>> Пожалуйста, убедитесь, что вы ввели корректные значения для времени и причины.',
color=disnake.Color.from_rgb(0, 0, 0)
)
await interaction.response.send_message(embed=embed, ephemeral=True)
elif isinstance(error, disnake.ext.commands.MissingPermissions):
embed = disnake.Embed(
description=f'\n{interaction.author.mention}\n ** У вас нет прав для использования этой команды. ** \n >>> Если вы хотите получить эти права, попробуйте оставить заявку в наборе персонала.',
color=disnake.Color.from_rgb(0, 0, 0)
)
await interaction.response.send_message(embed=embed, ephemeral=True)
@bot.slash_command(description='Посмотреть предупреждение пользователя')
async def warnings(ctx, member: disnake.Member):
warnings_count = await get_warnings(member.id)
await ctx.send(f"{member.mention} имеет {warnings_count} предупреждений.")
@bot.slash_command(description='Снять все предупреждение пользователя')
@commands.has_permissions(moderate_members=True)
async def clear_warnings(ctx, member: disnake.Member):
await reset_warnings(member.id)
await ctx.send(f"Все предупреждения для {member.mention} были сброшены.")
@clear_warnings.error
async def clear_warnings_error(interaction, error):
if isinstance(error, disnake.ext.commands.MissingRole):
embed = disnake.Embed(
description=f'\n{interaction.author.mention}\n ** У вас нет прав для использования этой команды. ** \n >>> Если вы хотите получить эти права, попробуйте оставить заявку в наборе персонала.',
color=disnake.Color.from_rgb(0, 0, 0)
)
await interaction.response.send_message(embed=embed, ephemeral=True)
elif isinstance(error, disnake.ext.commands.BadArgument):
embed = disnake.Embed(
description=f'\n{interaction.author.mention}\n ** Ошибка! ** \n >>> Пожалуйста, убедитесь, что вы ввели корректные значения для времени и причины.',
color=disnake.Color.from_rgb(0, 0, 0)
)
await interaction.response.send_message(embed=embed, ephemeral=True)
elif isinstance(error, disnake.ext.commands.MissingPermissions):
embed = disnake.Embed(
description=f'\n{interaction.author.mention}\n ** У вас нет прав для использования этой команды. ** \n >>> Если вы хотите получить эти права, попробуйте оставить заявку в наборе персонала.',
color=disnake.Color.from_rgb(0, 0, 0)
)
await interaction.response.send_message(embed=embed, ephemeral=True)
bot.run("токен сюда вставь")