tuxpy
Gold Üye
- Katılım
- 27 Eyl 2025
- Mesajlar
- 255
- Beğeniler
- 51
Daha demin bir konuda isteyen birisinin olduğunu gördüm, paylasmak istedim bos yorum atacaklar yorumlarını kendine saklasın, iyi geceler. İndirmeniz gereken pip paketleri import kısmında zaten belli.
Python:
import discord
import asyncio
TOKEN = ""
intents = discord.Intents.default()
intents.members = True
intents.message_content = True
client = discord.Client(intents=intents)
@client.event
async def on_ready():
print(f'{client.user} olarak giriş yapıldı.')
print('DM Duyuru Botu hazır. Komut bekliyor...')
print('-----------------------------------------')
@client.event
async def on_message(message):
if not message.content.startswith('!dmduyuru ') or message.author.bot or not message.guild:
return
if not message.author.guild_permissions.administrator:
await message.channel.send(f"{message.author.mention}, bu komutu kullanmak için yönetici iznine sahip olmalısın.")
return
duyuru_mesaji = message.content[len('!dmduyuru '):].strip()
if not duyuru_mesaji:
await message.channel.send(f"{message.author.mention}, lütfen bir duyuru mesajı girin. Kullanım: `!dmduyuru <mesajınız>`")
return
onay_mesaji = await message.channel.send(
f"**DİKKAT!**\n"
f"Aşağıdaki mesaj sunucudaki **{message.guild.member_count}** üyeye gönderilmek üzere ayarlandı. Bu işlem geri alınamaz.\n\n"
f"```\n{duyuru_mesaji}\n```\n"
f"Gönderimi onaylamak için ✅ tepkisine, iptal etmek için ❌ tepkisine tıklayın."
)
await onay_mesaji.add_reaction('✅')
await onay_mesaji.add_reaction('❌')
def check(reaction, user):
return user == message.author and str(reaction.emoji) in ['✅', '❌'] and reaction.message.id == onay_mesaji.id
try:
reaction, user = await client.wait_for('reaction_add', timeout=60.0, check=check)
except asyncio.TimeoutError:
await onay_mesaji.edit(content="Onay süresi doldu, işlem iptal edildi.", delete_after=10)
return
if str(reaction.emoji) == '❌':
await onay_mesaji.edit(content="İşlem kullanıcı tarafından iptal edildi.", delete_after=10)
return
await onay_mesaji.delete()
islem_raporu = await message.channel.send(f"✅ Onaylandı! Duyuru gönderimi başlatılıyor... Bu işlem sunucu büyüklüğüne göre zaman alabilir.")
basarili_sayac = 0
basarisiz_sayac = 0
uyeler = message.guild.members
toplam_uye = len(uyeler)
for i, member in enumerate(uyeler):
if member.bot:
continue
try:
if i > 0 and i % 20 == 0:
await asyncio.sleep(1)
await member.send(duyuru_mesaji)
basarili_sayac += 1
print(f"Başarılı: {member.name}")
except discord.Forbidden:
basarisiz_sayac += 1
print(f"Başarısız (DM Kapalı): {member.name}")
except Exception as e:
basarisiz_sayac += 1
print(f"Başarısız (Bilinmeyen Hata - {member.name}): {e}")
if (i + 1) % 50 == 0:
try:
await islem_raporu.edit(content=f"İşlem devam ediyor... ({i+1}/{toplam_uye})")
except discord.NotFound:
break
try:
await islem_raporu.edit(
content=f"**Duyuru Gönderimi Tamamlandı!**\n\n"
f"✅ **Başarılı Gönderim:** {basarili_sayac} üye\n"
f"❌ **Başarısız Gönderim:** {basarisiz_sayac} üye (DM'leri kapalı veya botu engellemiş olabilirler)"
)
except discord.NotFound:
await message.channel.send(
f"**Duyuru Gönderimi Tamamlandı!**\n\n"
f"✅ **Başarılı Gönderim:** {basarili_sayac} üye\n"
f"❌ **Başarısız Gönderim:** {basarisiz_sayac} üye"
)
client.run(TOKEN)