Çö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.
 
Ç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
Ş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]

Ne demek. 😊

Hocam çok teşekkürler. Son bir soru olarak, Shard miktarını neye göre belirleyebilirim?
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı