Untitled
Anonymous
plain_text
06/05/2024 7:20 PM
32.5 KB
25
Indexable
import discord
from discord.ext import commands
from discord import Intents
import random
from googletrans import Translator
from googlesearch import search
import googlesearch
import sympy
import asyncio
intents = discord.Intents.default()
intents.members = True
intents.messages = True
intents.voice_states = True
bot = commands.Bot(command_prefix="!", intents=intents.all())
intents.bans = True # Certifique-se de que o bot pode acessar banimentos
async def prompt_user(ctx, message):
await ctx.send(f"{message}\n\n**Se você não deseja colocar esta opção, use `!pular` para pular para a próxima opção.**")
@bot.event
async def on_ready():
await bot.change_presence(activity=discord.Game(name="Moderando Diversos Servidores🚀"))
print('Entramos Como {0.user}'.format(bot))
@bot.event
async def on_member_join(member):
server = member.guild
embed = discord.Embed(
title="Novo membro entrou no servidor",
description=f"Membro: {member.mention}\n"
f"Servidor: {server.name}",
color=discord.Color.green()
)
# ID do canal onde você deseja enviar o log
log_channel_id = 1224845921993625711
log_channel = bot.get_channel(log_channel_id)
await log_channel.send(embed=embed)
@bot.event
async def on_member_remove(member):
server = member.guild
embed = discord.Embed(
title="Membro saiu do servidor",
description=f"Membro: {member.mention}\n"
f"Servidor: {server.name}",
color=discord.Color.red()
)
# ID do canal onde você deseja enviar o log
log_channel_id = 1224845921993625711
log_channel = bot.get_channel(log_channel_id)
await log_channel.send(embed=embed)
@bot.event
async def on_message_delete(message):
# Verifica se a mensagem deletada não foi enviada pelo próprio bot
if message.author == bot.user:
return
channel = message.channel
server = message.guild
embed = discord.Embed(
title="Mensagem deletada",
description=f"Autor: {message.author.mention}\n"
f"Canal: {channel.mention}\n"
f"Servidor: {server.name}\n"
f"Conteúdo: {message.content}",
color=discord.Color.red()
)
embed.set_footer(text=f"ID do Canal: {channel.id}")
# ID do canal onde você deseja enviar o log
log_channel_id = 1224845921993625711
log_channel = bot.get_channel(log_channel_id)
await log_channel.send(embed=embed)
@bot.event
async def on_message_edit(before, after):
# Verifica se a mensagem editada não foi enviada pelo próprio bot
if before.author == bot.user:
return
channel = before.channel
server = before.guild
embed = discord.Embed(
title="Mensagem editada",
description=f"Autor: {before.author.mention}\n"
f"Canal: {channel.mention}\n"
f"Servidor: {server.name}\n"
f"Conteúdo anterior: {before.content}\n"
f"Conteúdo atual: {after.content}",
color=discord.Color.orange()
)
embed.set_footer(text=f"ID do Canal: {channel.id}")
# ID do canal onde você deseja enviar o log
log_channel_id = 1224845921993625711
log_channel = bot.get_channel(log_channel_id)
await log_channel.send(embed=embed)
@bot.event
async def on_message(message):
# Verifica se a mensagem não foi enviada pelo próprio bot
if message.author == bot.user:
return
channel = message.channel
server = message.guild
action = "enviada"
embed = discord.Embed(
title=f"Nova mensagem {action}",
description=f"Autor: {message.author.mention}\n"
f"Canal: {channel.mention}\n"
f"Servidor: {server.name}\n"
f"Conteúdo: {message.content or 'Não disponível'}",
color=discord.Color.blue()
)
embed.set_footer(text=f"ID do Canal: {channel.id}")
# ID do canal onde você deseja enviar o log
log_channel_id = 1224845921993625711
log_channel = bot.get_channel(log_channel_id)
await log_channel.send(embed=embed)
await bot.process_commands(message)
@bot.event
async def on_voice_state_update(member, before, after):
if before.channel != after.channel:
if before.channel is None:
action = "entrou em"
elif after.channel is None:
action = "saiu de"
else:
action = "mudou de"
embed = discord.Embed(
title=f"Membro {action} um canal de voz",
description=f"Membro: {member.mention}\n"
f"Canal anterior: {before.channel.name if before.channel else 'Nenhum'}\n"
f"Novo canal: {after.channel.name if after.channel else 'Nenhum'}",
color=discord.Color.orange()
)
# ID do canal onde você deseja enviar o log
log_channel_id = 1224845921993625711
log_channel = bot.get_channel(log_channel_id)
await log_channel.send(embed=embed)
@bot.command()
async def ajuda(ctx):
await ctx.send(f'**Olá Membro(a) {ctx.author.mention} Precisa De Ajuda? Aqui Estão Algumas Infomrções: Fui Criado No Dia 31/03/2024 Pelo Fundador Lukas, O Prefixo Para Ativar Algum Comando meu é a exclamação ! Tenho Diversos Comandos Legais! Qualquer Coisa Entre No Servidor Da TechPlay e Relate Um Erro Ou Bug Que Ocorreu Em Mim! ⚡ **')
@bot.command()
async def dado(ctx, numero):
variavel = random.randint(1,int(numero))
await ctx.send(f' ** O Numero Que Saiu Do Dado Foi O Numero {variavel}! 🎲 ** ')
@bot.command()
@commands.has_permissions(kick_members=True)
async def expulsar(ctx, member: discord.Member = None, *, reason=None):
if member is None or reason is None:
await ctx.send('**Para você usar o comando, primeiro veja se tem a permissão de expulsar. Depois de verificar, utilize o comando !expulsar @membro que deseja expulsar e o motivo.**')
return
try:
await member.kick(reason=reason)
await ctx.send(f'**O usuário {ctx.author.mention} expulsou o membro {member.mention}. O motivo foi: {reason}**')
except discord.Forbidden:
await ctx.send('**Eu não tenho permissão para expulsar este usuário.**')
@expulsar.error
async def expulsar_error(ctx, error):
if isinstance(error, commands.MissingPermissions):
await ctx.send('**Você não tem permissão para expulsar um usuário.**')
elif isinstance(error, commands.BadArgument):
await ctx.send('**Usuário não encontrado. Por favor, mencione um usuário válido.**')
@bot.command()
@commands.has_permissions(ban_members=True)
async def banir(ctx, member: discord.Member = None, *, reason=None):
if member is None or reason is None:
await ctx.send('**Para você usar o comando, primeiro veja se tem a permissão de banir. Depois de verificar, utilize o comando !banir @membro que deseja banir e o motivo.**')
return
try:
await member.ban(reason=reason)
await ctx.send(f'**O usuário {ctx.author.mention} baniu o membro {member.mention}. O motivo foi: {reason}**')
except discord.Forbidden:
await ctx.send('**Eu não tenho permissão para banir este usuário.**')
@banir.error
async def banir_error(ctx, error):
if isinstance(error, commands.MissingPermissions):
await ctx.send('**Você não tem permissão para banir um usuário.**')
elif isinstance(error, commands.BadArgument):
await ctx.send('**Usuário não encontrado. Por favor, mencione um usuário válido.**')
@bot.command()
async def embed(ctx):
"""Comando para criar uma mensagem embed personalizada."""
def check(m):
return m.author == ctx.author and m.channel == ctx.channel
await prompt_user(ctx, "**Por favor, envie o título da embed:**")
title_msg = await bot.wait_for('message', check=check)
await prompt_user(ctx, "**Por favor, envie o autor da embed:**")
author_msg = await bot.wait_for('message', check=check)
await prompt_user(ctx, "**Por favor, envie a URL da imagem do autor para adicionar à embed (opcional):**")
author_image_msg = await bot.wait_for('message', check=check)
await prompt_user(ctx, "**Por favor, envie a descrição da embed:**")
description_msg = await bot.wait_for('message', check=check)
await prompt_user(ctx, "**Por favor, envie a cor da embed em formato RGB (por exemplo, `255,0,0` para vermelho):**")
color_msg = await bot.wait_for('message', check=check)
await prompt_user(ctx, "**Por favor, envie a URL da imagem para adicionar à embed (opcional):**")
image_msg = await bot.wait_for('message', check=check)
await prompt_user(ctx, "**Por favor, envie a URL do thumbnail para adicionar à embed (opcional):**")
thumbnail_msg = await bot.wait_for('message', check=check)
await prompt_user(ctx, "**Por favor, envie a URL da segunda imagem para adicionar à embed (opcional):**")
image2_msg = await bot.wait_for('message', check=check)
await prompt_user(ctx, "**Por favor, envie o texto para o rodapé da embed:**")
footer_msg = await bot.wait_for('message', check=check)
await prompt_user(ctx, "**Por favor, mencione o canal para enviar a embed:**")
channel_msg = await bot.wait_for('message', check=check)
# Tratando opção de pular
title = title_msg.content if title_msg.content.lower() != '!pular' else None
author = author_msg.content if author_msg.content.lower() != '!pular' else None
author_image_url = author_image_msg.content if author_image_msg.content.lower() != '!pular' else None
description = description_msg.content if description_msg.content.lower() != '!pular' else None
color = discord.Color.default() if color_msg.content.lower() == '!pular' else discord.Color.from_rgb(*map(int, color_msg.content.split(',')))
image_url = image_msg.content if image_msg.content.lower() != '!pular' else None
thumbnail_url = thumbnail_msg.content if thumbnail_msg.content.lower() != '!pular' else None
image2_url = image2_msg.content if image2_msg.content.lower() != '!pular' else None
footer = footer_msg.content if footer_msg.content.lower() != '!pular' else None
channel = discord.utils.get(ctx.guild.channels, mention=channel_msg.content) if channel_msg.content.lower() != '!pular' else None
embed = discord.Embed(title=title, description=description, color=color)
if author:
embed.set_author(name=author, icon_url=author_image_url if author_image_url and author_image_url.lower() != '!pular' else None)
if image_url:
embed.set_image(url=image_url)
if thumbnail_url:
embed.set_thumbnail(url=thumbnail_url)
if image2_url:
embed.set_image(url=image2_url)
if footer:
embed.set_footer(text=footer)
if channel:
await channel.send(embed=embed)
await ctx.send(f"**Embed enviada para {channel.mention}.**")
else:
await ctx.send("**Nenhum canal mencionado. A embed não foi enviada.**")
@bot.command()
async def emoji(ctx, emoji: str = None):
if emoji is None:
await ctx.send("Para executar a ação de ver informações do emoji, coloque o emoji depois do comando. Por exemplo: !emoji ✅")
else:
try:
emoji_obj = await commands.PartialEmojiConverter().convert(ctx, emoji)
except commands.errors.BadArgument:
await ctx.send("O emoji fornecido é inválido. Certifique-se de usar um emoji válido.")
return
if emoji_obj.is_custom_emoji():
created_by = "Desconhecido"
server_created = "Desconhecido"
emoji_mention = f"<:{emoji_obj.name}:{emoji_obj.id}>"
else:
created_by = "Emoji padrão do Unicode"
server_created = "N/A"
emoji_mention = emoji_obj
creation_date = emoji_obj.created_at.strftime("%d/%m/%Y %H:%M:%S")
info_embed = discord.Embed(title="Informações do Emoji", color=0x00ff00)
info_embed.add_field(name="Nome:", value=emoji_obj.name, inline=False)
info_embed.add_field(name="ID:", value=emoji_obj.id, inline=False)
info_embed.add_field(name="Criado por:", value=created_by, inline=False)
info_embed.add_field(name="Data de Criação:", value=creation_date, inline=False)
info_embed.add_field(name="Servidor de Criação:", value=server_created, inline=False)
info_embed.add_field(name="Menção:", value=emoji_mention, inline=False)
info_embed.set_thumbnail(url=emoji_obj.url if emoji_obj.is_custom_emoji() else None)
await ctx.send(embed=info_embed)
@bot.command()
async def limpar(ctx, quantia: int = None):
"""Comando para limpar o chat."""
if quantia is None:
await ctx.send("**Por favor, especifique uma quantia de mensagens a serem limpas. Por exemplo: `!limpar 1000` **")
return
if quantia <= 0:
await ctx.send("**Por favor, especifique uma quantia válida de mensagens para limpar.**")
return
try:
await ctx.channel.purge(limit=quantia + 1) # +1 para incluir o comando digitado
await ctx.send(f"**Chat limpo com sucesso✅ Foram removidas {quantia} mensagens.**")
except discord.Forbidden:
await ctx.send("**Não tenho permissão para limpar mensagens neste canal.**")
@bot.command()
async def cargo(ctx, *, cargo: discord.Role = None):
if cargo is None:
await ctx.send("**Depois de utilizar o comando `!cargo`, mencione o cargo que você deseja saber as informações. Por exemplo: `!cargo @Teste` **")
return
created_by = ctx.guild.get_member(cargo.guild.owner_id)
permissions = '\n'.join(perm for perm, value in cargo.permissions if value)
embed = discord.Embed(title="Informações do Cargo", color=discord.Color.blue())
embed.add_field(name="ID do Cargo", value=cargo.id, inline=False)
embed.add_field(name="Nome do Cargo", value=cargo.name, inline=False)
embed.add_field(name="Menção do Cargo", value=cargo.mention, inline=False)
embed.add_field(name="Servidor do Cargo", value=cargo.guild.name, inline=False)
embed.add_field(name="Quem Criou o Cargo", value=created_by.mention if created_by else "Desconhecido", inline=False)
embed.add_field(name="Quando Foi Criado", value=cargo.created_at.strftime("%d/%m/%Y %H:%M:%S"), inline=False)
embed.add_field(name="Permissões do Cargo", value=permissions or "Nenhuma", inline=False)
await ctx.send(embed=embed)
@bot.command()
async def servidor(ctx):
guild = ctx.guild
owner = guild.owner
creation_date = guild.created_at.strftime("%d/%m/%Y %H:%M:%S")
embed = discord.Embed(title="Informações do Servidor", color=discord.Color.blue())
embed.add_field(name="Nome do Servidor", value=guild.name, inline=False)
embed.add_field(name="Data de Criação do Servidor", value=creation_date, inline=False)
embed.add_field(name="Fundador do Servidor", value=owner.mention, inline=False)
await ctx.send(embed=embed)
@bot.command()
async def usuario(ctx, member: discord.Member = None):
if member is None:
await ctx.send("Para ver as informações de um usuário, você precisa marcá-lo. Por exemplo: `!usuario @pintinh0`")
return
creation_date = member.created_at.strftime("%d/%m/%Y %H:%M:%S")
embed = discord.Embed(title="Informações do Usuário", color=discord.Color.blue())
embed.set_thumbnail(url=member.avatar.url) # Aqui está a correção
embed.add_field(name="Nick do Usuário", value=member.display_name, inline=False)
embed.add_field(name="Nome do Usuário", value=member.name, inline=False)
embed.add_field(name="ID do Usuário", value=member.id, inline=False)
embed.add_field(name="Perfil do Usuário", value=member.mention, inline=False)
embed.add_field(name="Data de Criação do Usuário", value=creation_date, inline=False)
await ctx.send(embed=embed)
@bot.command()
async def canal(ctx, canal: discord.TextChannel = None):
if canal is None:
await ctx.send("**Para você utilizar o comando, utilize `!canal #Marque_o_canal_que_deseja_excluir`.**")
return
if not ctx.author.guild_permissions.manage_channels:
await ctx.send("**Você não tem permissões para excluir canais!**")
return
try:
await canal.delete()
log_channel = ctx.channel
embed = discord.Embed(
title=f"Canal Excluído",
description=f"O Usuário {ctx.author.mention} Excluiu O Canal {canal.mention} Com Sucesso.",
color=discord.Color.red()
)
await log_channel.send(embed=embed)
except discord.Forbidden:
await ctx.send('**Eu não tenho permissão para excluir este canal.**')
translator = Translator()
# Evento de inicialização do bot
# Comando de tradução
@bot.command()
async def traduzir(ctx, linguagem_destino: str, *, texto: str):
try:
traducao = translator.translate(texto, dest=linguagem_destino)
await ctx.send(f'**Traduzindo Texto⏰\nTexto Traduzido Com Sucesso✅: {traducao.text}**')
except Exception as e:
await ctx.send(f'** :x: Ocorreu um erro ao traduzir o texto: Idioma Invalido, Utilize abreviações de idiomas por exemplo: English a abreviação é en.**')
# Tratamento de erro para argumentos ausentes
@traduzir.error
async def traduzir_error(ctx, error):
if isinstance(error, commands.MissingRequiredArgument):
await ctx.send('** :warning: Para você utilizar o comando de traduzir utilize o comando** `!traduzir (Lingua que você quer a tradução por exemplo en, pt etc...) (Texto que você quer traduzir`')
# Evento de inicialização do bot
# Comando de calculadora
@bot.command()
async def calculadora(ctx, *, calculo: str = None):
if calculo is None:
await ctx.send('Para você utilizar o comando de calculadora utilize `!calculadora (Cálculo que você quer fazer)`')
return
# Substitui 'x' por '*' e ':' por '/'
calculo = calculo.replace('x', '*').replace(':', '/')
try:
resultado = sympy.sympify(calculo)
await ctx.send(f'O resultado do cálculo é: {resultado}')
except Exception as e:
await ctx.send(f'Ocorreu um erro ao calcular: {str(e)}')
@bot.command()
@commands.has_permissions(ban_members=True)
async def desbanir(ctx, user_id: int = None, *, reason=None):
if user_id is None:
await ctx.send('**Para você usar o comando, utilize o comando !desbanir <id_do_usuario> e o motivo.**')
return
try:
user = await bot.fetch_user(user_id)
await ctx.guild.unban(user, reason=reason)
await ctx.send(f'**O usuário {ctx.author.mention} desbaniu o usuário {user.mention}. O motivo foi: {reason}**')
except discord.NotFound:
await ctx.send('**Usuário não encontrado. Certifique-se de que o ID do usuário está correto.**')
except discord.Forbidden:
await ctx.send('**Eu não tenho permissão para desbanir este usuário.**')
@desbanir.error
async def desbanir_error(ctx, error):
if isinstance(error, commands.MissingPermissions):
await ctx.send('**Você não tem permissão para desbanir um usuário.**')
elif isinstance(error, commands.BadArgument):
await ctx.send('**ID do usuário não encontrado. Por favor, forneça um ID válido.**')
@bot.command()
async def google(ctx, *, query):
search_results = googlesearch.search(query, num=5, stop=5, pause=2)
unique_links = set()
for link in search_results:
if link not in unique_links:
unique_links.add(link)
await ctx.send(f"Aqui está o que encontrei sobre '{query}':")
for link in unique_links:
await ctx.send(link)
@bot.command()
async def comandos(ctx):
embed = discord.Embed(title="Comandos do Bot", description="Aqui estão os comandos disponíveis:", color=discord.Color.purple())
embed.add_field(name="!ajuda", value="Diz Minha Historia.", inline=False)
embed.add_field(name="!dado (numero)", value="O numero que você colocar vai cair exato ou abaixo do numero.", inline=False)
embed.add_field(name="!expulsar @membro motivo", value="Expulsa um membro marcando ele e informa o motivo por que expulsou.", inline=False)
embed.add_field(name="!banir @membro motivo", value="Bane um mebro marcando ele e informando o motivo de banimento.", inline=False)
embed.add_field(name="!embed", value="Você pode criar inúmeras embeds e selecionar qual canal que ela será enviada. Também pode customizá-la.", inline=False)
embed.add_field(name="!emoji (Emoji que você quer ver as informações)", value="Te diz todas as informações do emoji que você selecionou.", inline=False)
embed.add_field(name="!limpar (quantidade)", value="Limpa a quantidade de mensagens que você deseja que seja limpada em um chat.", inline=False)
embed.add_field(name="!cargo (cargo que deseja ver as informações )", value="Mostra as informações do cargo que foi mencionado")
embed.add_field(name="!servidor", value="Mostra informações do servidor que o comando foi executado")
embed.add_field(name="!usuario (marcar o usuario que quer ver as informações)", value="Mostra informações do usuario que foi marcado.")
embed.add_field(name="!adicionar (marcar cargo que quer adicionar) (marcar membro que quer adicionar o cargo)", value="Adiciona O Cargo Marcado Em Um Membro Selecionado.")
embed.add_field(name="!retirar (marcar cargo que quer retirar) (marcar membro que quer retirar o cargo)", value="Retira O Cargo Marcado Em Um Membro Selecionado.")
embed.add_field(name="!traduzir (idioma que deseja traduzir por exemplo pt, en etc...) (Palavra que quer traduzir)", value="Traduz Palavras com o idioma desejado")
embed.add_field(name="!google (Oque deseja pesquisar no google)", value="Faz uma pesquisa e envia links da sua pesquisa desejada")
await ctx.author.send(embed=embed)
await ctx.send("**Enviei uma mensagem privada com a lista de comandos.**")
@bot.command()
@commands.has_permissions(manage_roles=True)
async def adicionar(ctx, role: discord.Role = None, member: discord.Member = None):
if role is None or member is None:
await ctx.send('**Para você adicionar um cargo verifique se você tem a permissão de adicionar um cargo. Se tiver ótimo agora para adicionar um cargo utilize o comando !adicionar @Cargo que quer adicionar @Membro que quer adicionar**')
return
if member.top_role >= ctx.author.top_role:
await ctx.send('**Você não tem permissão para adicionar cargos neste usuário.**')
return
try:
await member.add_roles(role)
await ctx.send(f'**{ctx.author.mention} adicionou o cargo {role.mention} para {member.mention}**')
except discord.Forbidden:
await ctx.send('**Eu não tenho permissão para adicionar este cargo.**')
@adicionar.error
async def adicionar_error(ctx, error):
if isinstance(error, commands.MissingPermissions):
await ctx.send('**Você não tem permissão para adicionar cargos.**')
@bot.command()
@commands.has_permissions(manage_roles=True)
async def retirar(ctx, role: discord.Role = None, member: discord.Member = None):
if role is None or member is None:
await ctx.send('**Para você utilizar o comando de !retirar verifique se você tem o cargo de Adicionar cargos. Se tiver ótimo utilize o comando !retirar @Cargo que quer retirar o cargo @Membro que quer retirar o cargo**')
return
if member.top_role >= ctx.author.top_role:
await ctx.send('**Você não tem permissão para retirar cargos deste usuário.**')
return
try:
await member.remove_roles(role)
await ctx.send(f'**{ctx.author.mention} retirou o cargo {role.mention} de {member.mention}**')
except discord.Forbidden:
await ctx.send('**Eu não tenho permissão para retirar este cargo.**')
@retirar.error
async def retirar_error(ctx, error):
if isinstance(error, commands.MissingPermissions):
await ctx.send('**Você não tem permissão para retirar cargos.**')
bot.run('Token')
Editor is loading...
Leave a Comment