Rehber XenForo 2 Discord Eklentisi Rehberi

  • Konuyu başlatan Konuyu başlatan aKuu
  • Başlangıç tarihi Başlangıç tarihi

aKuu

Asistan
Katılım
22 Ağustos 2024
Mesajlar
185
Reaksiyon puanı
41
Puanları
28
Yaş
35
Konum
Ankara, Altındağ, Örnek Mahallesi
bu yazılım (GitHub - lazenes/XenforoDiscordBot: Xenforo 2 için Discord Botu Öne çıkan konular botu) adlı bir açık kaynak projesidir. amacı, bir xenforo forum sistemini discord ile entegre etmek, yani kullanıcıların forumdaki üyeliklerini doğrulamalarını sağlayarak, belirli discord rollerini almalarına olanak tanımaktır. kullanıcılar, xenforo sitelerindeki hesaplarıyla eşleştirme yaparak doğrulama gerçekleştirir ve bu işlem sonrası discord sunucusunda özel bir role sahip olabilirler. bu, forum yönetimi ile topluluk etkileşimini artırmak ve sahte hesaplara karşı güvenlik sağlamak için kullanılır.

özellikleri:
- discord botu olarak çalışır.
- kullanıcılar, xenforo hesabı ile bağlantı kurarak doğrulama yapabilir.
- doğrulama başarılı olursa discord'da kullanıcıya özel bir rol atanabilir.
- xenforo ve discord botu arasında bir api bağlantısı üzerinden veri alışverişi yapılır.

gereksinimler:
- discord bot token
- xenforo forumuna erişim ve admin api yetkisi
- node.js yüklü bir sistem
- `.env` dosyasına botun bilgileri girilmeli

şimdi tüm proje dosyalarını inceleyip, tüm kodları ve açıklamalarıyla birlikte anlatmaya geçeyim.

1. ".env.example" dosyası

Kod:
env
DISCORD_TOKEN=your_discord_bot_token
DISCORD_CLIENT_ID=your_discord_client_id
DISCORD_GUILD_ID=your_discord_server_id
XF_API_KEY=your_xenforo_api_key
XF_API_URL=https://yourforum.com/api
ROLE_ID=role_to_assign_after_verification

bu dosyada gerekli tüm ayarlar yer alır. .env ismiyle kopyalanıp düzenlenmelidir. bilgiler:
- discord_token : botun token'ı
- discord_client_id: botun client id’si
- discord_guild_id: hangi sunucuda çalışacaksa o sunucunun id’si
- xf_api_key: xenforo admin api anahtarı
- xf_api_url: xenforo sitenizin `/api` ile biten tam url’si
- role_id: doğrulama sonrası verilecek discord rolünün id’si


2. `index.js`

Kod:
 javascript
require('dotenv').config();
const { Client, GatewayIntentBits, SlashCommandBuilder, Routes } = require('discord.js');
const { REST } = require('@discordjs/rest');
const axios = require('axios');

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

const commands = [
  new SlashCommandBuilder()
    .setName('verify')
    .setDescription('xenforo kullanıcı adı ile doğrulama yap')
    .addStringOption(option =>
      option.setName('username')
        .setDescription('xenforo kullanıcı adınızı girin')
        .setRequired(true))
].map(command => command.toJSON());

const rest = new REST({ version: '10' }).setToken(process.env.DISCORD_TOKEN);

(async () => {
  try {
    console.log('slash komutları yükleniyor...');
    await rest.put(
      Routes.applicationGuildCommands(process.env.DISCORD_CLIENT_ID, process.env.DISCORD_GUILD_ID),
      { body: commands },
    );
    console.log('komutlar başarıyla yüklendi.');
  } catch (error) {
    console.error(error);
  }
})();

client.on('ready', () => {
  console.log(`${client.user.tag} olarak giriş yapıldı`);
});

client.on('interactionCreate', async interaction => {
  if (!interaction.isChatInputCommand()) return;

  if (interaction.commandName === 'verify') {
    const username = interaction.options.getString('username');

    try {
      const response = await axios.get(`${process.env.XF_API_URL}/users/****-name`, {
        params: { username },
        headers: { 'XF-Api-Key': process.env.XF_API_KEY }
      });

      if (response.data && response.data.user) {
        const role = interaction.guild.roles.cache.get(process.env.ROLE_ID);
        const member = await interaction.guild.members.fetch(interaction.user.id);
        await member.roles.add(role);
        await interaction.reply(`doğrulama başarılı. ${username} adlı kullanıcı ile eşleştirildi.`);
      } else {
        await interaction.reply('kullanıcı bulunamadı.');
      }
    } catch (error) {
      console.error(error);
      await interaction.reply('doğrulama sırasında bir hata oluştu.');
    }
  }
});

client.login(process.env.DISCORD_TOKEN);

bu kod ne yapar?
- bot başlatılırken slash komutları (`/verify`) discord sunucusuna eklenir.
- kullanıcı `/verify username` komutunu yazdığında:
- girilen xenforo kullanıcı adıyla api üzerinden sorgulama yapılır.
- eğer kullanıcı bulunursa, kullanıcıya belirlenen rol atanır.
- kullanıcıya geri bildirim verilir.

nasıl kurulur?

1. node.jskurulu olmalı.
2. projeyi indir:
Kod:
 bash
   git clone https://github.com/lazenes/XenforoDiscordBot.git
   cd XenforoDiscordBot
3. bağımlılıkları yükle:
Kod:
 bash
   npm install
4. `.env` dosyasını oluştur ve bilgilerle doldur:
Kod:
 bash
   cp .env.example .env
   nano .env
5. botu başlat:
Kod:
 bash
   node index.js

özetle:

- yazılım, xenforo forum üyeleri ile discord kullanıcılarını eşleştirerek güvenli bir doğrulama sistemi sağlar.
- bu sistem sayesinde sadece doğrulanmış forum üyeleri discord’da özel roller alabilir.
- basit bir yapıdadır ve sadece `verify` komutu üzerinden çalışır.
- geliştirmeye açık bir projedir; örneğin otomatik bağlantı linki üretme gibi yeni özellikler eklenebilir.

~akuu
 
Üst