Dostlar selamlar Python ile yeni bir moderasyon botu geliştiriyorum.
Şu anda !rolver !rolkaldir !mesajsil !haberler !help yeni gelen üyeler için hoşgeldin, güle güle komutları mevcut. Bot için küfür engelleme sistemi getirmeyi düşünüyorum lakin kodunu yazdığımda diğer rol komutlarını hiçe sayıyor, sadece küfür algılamaya odaklanıyor. Nerede hata yapmış olabilirim örnek olarak !help komutunu ve küfür algılama kodunu paylaşıyorum.
import discord
import socket
import asyncio
import re
import datetime
from discord.ext import commands
from discord.utils import get
import requests
from bs4 import BeautifulSoup
# Discord botunu oluştur
intents = discord.Intents().all() # Tüm izinleri açar
intents.message_content = True
client = commands.Bot(command_prefix="!", intents=intents)
client.remove_command('help')
# Yeşil renk
green = discord.Color.green()
# Kırmızı renk
red = discord.Color.red()
# !help komutunu işle
@client.command()
async def help(ctx):
embed = discord.Embed(title="Bot komutları", description="Aşağıdaki komutları kullanarak botu kontrol edebilirsiniz.", color=0xeee657)
# !haberler komutunun açıklamasını ekle
embed.add_field(name="!haberler", value="En yeni teknoloji haberleri gösterir.", inline=False)
# !rolver komutunun açıklamasını ekle
embed.add_field(name="!rolver @rol @kullanıcı", value="Belirtilen rolü, belirtilen kullanıcıya verir. (Sadece yetkili kullanıcılar kullanabilir)", inline=False)
# !rolkaldir komutunun açıklamasını ekle
embed.add_field(name="!rolkaldir @rol_adı @kullanıcı_etiketi", value="Belirtilen rolü, belirtilen kullanıcıdan alır. (Sadece yetkili kullanıcılar kullanabilir)", inline=False)
# !sil komutunun açıklamasını ekle
embed.add_field(name="!sil miktar", value="Belirtilen miktarda mesajı siler (Sadece yetkili kullanıcılar kullanabilir)", inline=False)
await ctx.send(embed=embed)
kufur_kelimeleri_dosyasi = "C:\kufur_kelimeleri\kufur_kelimeleri.txt"
# Küfür kelime listesini oku
with open(kufur_kelimeleri_dosyasi, "r") as dosya:
kufur_kelimeleri = dosya.read().splitlines()
# Küfür filtreleme fonksiyonu
def kufur_filtrele(mesaj):
for kelime in kufur_kelimeleri:
if kelime in mesaj.content:
return True
return False
# Mesaj olayını işle
@client.event
async def on_message(mesaj):
# Eğer mesaj kendi botumuzdan geliyorsa işlem yapmayalım
if mesaj.author == client.user:
return
# Küfür filtresi uygula
if kufur_filtrele(mesaj):
# Küfür mesajını sil
await mesaj.delete()
# Küfür eden üyeyi mesaj gönderememesi için 10 dakika mute et
mesaj_gonderme_izni = discord.PermissionOverwrite()
mesaj_gonderme_izni.send_messages = False
await mesaj.channel.set_permissions(mesaj.author, overwrite=mesaj_gonderme_izni)
# Mutenin verildiğine dair mesaj gönder
await mesaj.channel.send(f"{mesaj.author.mention} kullanıcısına argo kelime kullandığından dolayı mute verildi. 🔇")
# Mute süresini belirle
mute_zamani = 10 * 60 # 10 dakika, 60 saniye/dakika
# Mute süresi dolunca üyenin mute iznini kaldır
await asyncio.sleep(mute_zamani)
await mesaj.channel.set_permissions(mesaj.author, overwrite=None)
# Mutenin kaldırıldığına dair mesaj gönder
await mesaj.channel.send(f"{mesaj.author.mention} üyenin cezası bitti. 🔊")
# Botu çalıştır
client.run("TOKEN")