Çözüldü Discordpy Shard nedir, nasıl eklenir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

FazliBasturk

Hectopat
Katılım
10 Haziran 2020
Mesajlar
817
Çözümler
7
Daha fazla  
Cinsiyet
Erkek
Discordpy ile bot yapıyorum. Bazı botlarda görüyordum işte 5 shard vb diye. Araştırdım ama çok bir sonuca ulaşamadım Türkçe olarak. Shard tam olarak ne oluyor?
 
Çözüm
Şu şekilde yapın:

[CODE lang="python" highlight="18"]##########################################################

import asyncio.
import discord.
import emoji.
import os.
import random.
import dbl.

from discord.ext import tasks, commands.
from online import online.
from replit import db.

##########################################################

intents = discord.Intents().all()

client = commands.AutoShardedBot(shard_count=istediginizmiktar, command_prefix=('f!', 'F!'), help_command=None, case_insensitive=True, intents=intents)
topgg = dbl.DBLClient(client, os.getenv('TOPGG'))

@client.event
async def on_ready():
print('Bağlanılan bot: {}'.format(client.user.name))
print('Bot ID: {}'.format(client.user.id))

client.run(os.getenv('DISCORD'))[/CODE]

Edit: Hocam sizi de yoruyorsam kusuruma bakmayın.
Ne demek.
Botunuzu daha hızlı çalışabilmesi için sanal parçalara ayırıyor denilebilir. Örneğin X kadar sunucuya 1. shard Y kadar sunucuya 2. shard hizmet edecek şeklinde.
 
Peki bunu nasıl yapabilirim fikriniz var mı?
Çok basit bir şekilde yapılıyor olması gerek. Yakında bunun için de bir rehber hazırlayacağım ancak internetten bulduğum kodda şu şekilde bir kod verilmiş:

[CODE lang="javascript" title="shard.js"]const { ShardingManager } = require('discord.js');


const manager = new ShardingManager('./Botun ismi.js', {
totalShards: 'auto',
token: 'Tokeninizi buraya yazın'
});

manager.on('shardCreate', (shard) => console.log(`Shard ${shard.id} launched`));

manager.spawn();[/CODE]

Teoride bu kodun çalışması gerek, ancak pratikte kendim denemedim. Botunuzu bot.js ya da index.js yerine shard.js ile açın.

Düzenleme: Shard sistemini şu anda denedim, kod çalışıyor bir problem yok. Açılan shard sayısı botunuzun hizmet ettiği sunucu sayısı arttıkça artacaktır.
 

Hocam Python için örnek var mı acaba? Python ile yazıyorum maalesef
 
Hocam Python için örnek var mı acaba? Python ile yazıyorum maalesef
Python kodunuzun tokeni içermeyen giriş kısmını atabilir misiniz, ilgilenmeye çalışacağım. Python ile bot yazmayalı uzun zaman oluyor. Ayrıca Python aşığı değilseniz de JS geçmenizi öneririm, yararlanabileceğiniz kaynak sayısı kat kat daha fazla.
 
Python kodunuzun tokeni içermeyen giriş kısmını atabilir misiniz, ilgilenmeye çalışacağım.

[CODE lang="python" title="Main.py"]##########################################################

import asyncio
import discord
import emoji
import os
import random
import dbl

from discord.ext import tasks, commands
from online import online
from replit import db

##########################################################

intents = discord.Intents().all()

client = commands.Bot(command_prefix=('f!', 'F!'), help_command=None, case_insensitive=True, intents=intents)
topgg = dbl.DBLClient(client, os.getenv('TOPGG'))

@client.event
async def on_ready():
print('Bağlanılan bot: {}'.format(client.user.name))
print('Bot ID: {}'.format(client.user.id))

client.run(os.getenv('DISCORD'))[/CODE]

Hocam burayı mı demek istediniz tam emin olamadım.

Ayrıca Python aşığı değilseniz de JS geçmenizi öneririm, yararlanabileceğiniz kaynak sayısı kat kat daha fazla.

İlk Python'dan başlayınca (daha JS bilmiyordum o zamanlar şimdi biraz biliyorum) Python ile yazdım botu.
Bayadırda devam ediyorum, 70 - 80 civarı sunucuya ulaşınca da geri dönemedim JS. Şimdide bunun zorluğunu çekiyorum. Dediğiniz gibi JS için kaynak Python'dan bayağı fazla.
Edit: Hocam sizide yoruyorsam kusuruma bakmayın.
 
Şu şekilde yapın:

[CODE lang="python" highlight="18"]##########################################################

import asyncio.
import discord.
import emoji.
import os.
import random.
import dbl.

from discord.ext import tasks, commands.
from online import online.
from replit import db.

##########################################################

intents = discord.Intents().all()

client = commands.AutoShardedBot(shard_count=istediginizmiktar, command_prefix=('f!', 'F!'), help_command=None, case_insensitive=True, intents=intents)
topgg = dbl.DBLClient(client, os.getenv('TOPGG'))

@client.event
async def on_ready():
print('Bağlanılan bot: {}'.format(client.user.name))
print('Bot ID: {}'.format(client.user.id))

client.run(os.getenv('DISCORD'))[/CODE]

Edit: Hocam sizi de yoruyorsam kusuruma bakmayın.
Ne demek.
 
Çözüm

Hocam çok teşekkürler. Son bir soru olarak, Shard miktarını neye göre belirleyebilirim?
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…