-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdiscord_code.py
181 lines (146 loc) · 5.14 KB
/
discord_code.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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
## ¡Hola! bienvenido a mi código en python.
##
```python
"""
Este es un bot de Discord que tiene un solo comando slash,
/ping. El comando responde con un mensaje que muestra la latencia del bot.
"""
import os
import disnake
from disnake.ext import commands
from dotenv import load_dotenv
load_dotenv()
intents = disnake.Intents.default()
intents.members = True
intents.messages = True
intents.guilds = True
intents.reactions = True
intents.message_content = True
bot = commands.Bot(command_prefix="/", intents=intents)
TOKEN = os.getenv("DISCORD_BOT_TOKEN")
@bot.event
async def on_ready():
"""
Esta función se ejecuta cuando el bot se conecta al servidor de Discord.
Parametros:
- Ninguno.
Returns:
- Ninguno.
Raises:
- Ninguno.
"""
print(f"Conectado como {bot.user} ({bot.user.id})")
@bot.slash_command(
name="ping",
description="Muestra el ping del bot."
)
async def ping(ctx: disnake.ApplicationCommandInteraction):
"""
Muestra el ping del bot.
Parameters:
- ctx: El contexto del comando.
Returns:
- Ninguno.
Raises:
- Ninguno.
"""
await ctx.response.send_message(f"Pong! Latencia: {bot.latency*1000:.2f} ms")
@bot.slash_command(
name="kick",
description="Expulsa a un miembro del servidor."
)
@commands.has_permissions(kick_members=True)
async def kick(ctx: disnake.ApplicationCommandInteraction,
member: disnake.Member, *, reason: str = "No se especificó una razón."):
"""
Expulsa a un miembro del servidor.
Parameters:
- ctx: El contexto del comando.
- member: El miembro del servidor que se va a expulsar.
- Razon (opcional): La razón detrás de la expulsión.
Returns:
- Ninguno
Raises:
- discord.ext.commands.errors.BadArgument: Si se proporciona un miembro inválido.
- discord.ext.commands.errors.MissingPermissions:
Si el autor del comando no tiene permiso para expulsar miembros.
"""
await member.kick(reason=reason)
await ctx.response.send_message(f"El \
miembro {member.mention} ha sido expulsado del servidor. Razón: {reason}")
@bot.slash_command(
name="ban",
description="Banea a un miembro del servidor."
)
@commands.has_permissions(ban_members=True)
async def ban(ctx: disnake.ApplicationCommandInteraction,
member: disnake.Member, *, reason: str = "No se especificó una razón."):
"""
Banea a un miembro del servidor.
Parameters:
- ctx: El contexto del comando.
- member: El miembro del servidor que se va a banear.
- reason (opcional): La razón detrás del baneo.
Returns:
- Ninguno
Raises:
- discord.ext.commands.errors.BadArgument: Si se proporciona un miembro inválido.
- discord.ext.commands.errors.MissingPermissions:
Si el autor del comando no tiene permiso para banear miembros.
"""
await member.ban(reason=reason)
await ctx.response.send_message(f"El\
miembro {member.mention} ha sido baneado del servidor. Razón: {reason}")
@bot.slash_command(
name="unban",
description="Desbanea a un miembro del servidor."
)
@commands.has_permissions(ban_members=True)
async def unban(ctx: disnake.ApplicationCommandInteraction,
member: str, *, reason: str = "No se especificó una razón."):
"""
Desbanea a un miembro del servidor.
Parameters:
- ctx: El contexto del comando.
- member: El nombre y discriminador (ejemplo: "usuario#0000") del usuario a desbanear.
- reason (opcional): La razón detrás del desbaneo.
Returns:
- Ninguno
Raises:
- discord.ext.commands.errors.BadArgument: Si se proporciona un miembro inválido.
- discord.ext.commands.errors.NotFound: Si la persona que se intenta desbanear no está baneada.
- discord.ext.commands.errors.MissingPermissions:
Si el autor del comando no tiene permiso para desbanear miembros.
"""
banned_users = await ctx.guild.bans()
member_name, member_discriminator = member.split("#")
for ban_entry in banned_users:
user = ban_entry.user
if (user.name, user.discriminator) == (member_name, member_discriminator):
await ctx.guild.unban(user, reason=reason)
await ctx.response.send_message(f"El\
miembro {user.mention} ha sido desbaneado del servidor. Razón: {reason}")
return
await ctx.send(f"No se encontró un usuario baneado con el nombre {member}.")
@bot.slash_command(
name="clear",
description="Elimina un número específico de mensajes de un canal."
)
@commands.has_permissions(manage_messages=True)
async def clear(ctx: disnake.ApplicationCommandInteraction, amount: int):
"""
Elimina un número específico de mensajes de un canal.
Parameters:
- ctx: El contexto del comando.
- amount: El número de mensajes que se eliminarán.
Returns:
- Ninguno.
Raises:
- discord.ext.commands.errors.MissingPermissions:
Si el autor del comando no tiene permiso para eliminar mensajes.
"""
await ctx.channel.purge(limit=amount + 1)
await ctx.response.send_message(f"{amount} mensajes han sido eliminados.")
# Inicio del bot
bot.run('DISCORD_BOT_TOKEN')
```