Untitled
unknown
plain_text
10 months ago
25 kB
8
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