#v14 Kod Yardım

1 messages · Page 1 of 1 (latest)

fast flame
#

index.js```js
const { Client, GatewayIntentBits } = require('discord.js');
const { Handlers } = require('./utils/functions');

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

client.config = require('./utils/config');

const handlers = new Handlers(client);

handlers.events();
var users = ["693178945306230854"]
client.on("ready", () => {
client.application.commands.create({
name: "mesajat",
description: "Birine mesaj atarsınız.",
options: [{name: "resim", description: "Gondereceginiz resim.", required: false, type: 11}]
})
})
client.on("interactionCreate", async (interaction) => {
if (users.includes(interaction.user.id) == false) return interaction.reply({content: "> Bu komutu sadece yetkililer kullanır."})
if (interaction.channel && interaction.channel.type !== 1) return interaction.reply({ content: "dm geç" })
const lang = interaction.client.config.lang == 'tr';
if (interaction.isCommand() && interaction.commandName == "mesajat") {
const {
ModalBuilder,
TextInputBuilder,
TextInputStyle,
ActionRowBuilder
} = require('discord.js');
const modal = new ModalBuilder()
.setCustomId('mailForm')
.setTitle(lang ? 'Doğrulama' : 'Verifaction');

          const mail = new TextInputBuilder()
              .setCustomId('mailInput')
              .setStyle(TextInputStyle.Paragraph)
              .setLabel(lang ? 'E-Posta Adresleri:' : 'E-Mail Adresses:')
              .setPlaceholder(lang ? 'ö[email protected]' : '[email protected]');

          const text = new TextInputBuilder()
              .setCustomId('textInput')
              .setStyle(TextInputStyle.Paragraph)
              .setLabel(lang ? 'Göndereceğiniz mesaj:' : 'The message you want to send:')
              .setPlaceholder(lang ? 'Mesajınız.' : 'Mesajınız.');

          const field = new ActionRowBuilder().addComponents(mail);
          const field2 = new ActionRowBuilder().addComponents(text);

          modal.addComponents(field, field2);

          await interaction.showModal(modal);
}

})

client.login(client.config.client.token);

#

interactionCreate.js```js
const {
Events,
ModalBuilder,
TextInputBuilder,
TextInputStyle,
ActionRowBuilder,
EmbedBuilder,
ButtonBuilder,
ButtonStyle,
} = require('discord.js');

const codeSchema = require('../schemas/codes');
const nodemailer = require('nodemailer');

module.exports = {
name: Events.InteractionCreate,
once: false,
async execute(interaction) {
const lang = interaction.client.config.lang == 'tr';

    if (interaction.customId == 'openMailForm') {
        const modal = new ModalBuilder()
            .setCustomId('mailForm')
            .setTitle(lang ? 'Doğrulama' : 'Verifaction');

        const mail = new TextInputBuilder()
            .setCustomId('mailInput')
            .setStyle(TextInputStyle.Paragraph)
            .setLabel(lang ? 'E-Posta Adresleri:' : 'E-Mail Adresses:')
            .setPlaceholder(lang ? 'ö[email protected]' : '[email protected]');

        const text = new TextInputBuilder()
            .setCustomId('textInput')
            .setStyle(TextInputStyle.Paragraph)
            .setLabel(lang ? 'Göndereceğiniz mesaj:' : 'The message you want to send:')
            .setPlaceholder(lang ? 'Mesajınız.' : 'Mesajınız.');

        const field = new ActionRowBuilder().addComponents(mail);
        const field2 = new ActionRowBuilder().addComponents(text);

        modal.addComponents(field, field2);

        await interaction.showModal(modal);
    }

    if (interaction.customId == 'mailForm') {

        await interaction.deferReply({ ephemeral: true });

        const mail = interaction.fields.getTextInputValue('mailInput');
        const text = interaction.fields.getTextInputValue('textInput');

        const code = Math.floor(Math.random() * 900000) + 100000;

        await codeSchema.findByIdAndUpdate(
            interaction.user.id,
            { $set: { code } },
            { upsert: true }
        );

        const transporter = nodemailer.createTransport({
            service: 'gmail',
            auth: {
                user: interaction.client.config.google.mail,
                pass: interaction.client.config.google.password,
            },
        });

        var emails = mail.split("\n")

        for(var email in emails) {
            const options = {
                from: `"${interaction.client.config.options.mailTitle}" <${interaction.client.config.google.mail}>`,
                to: `${emails[email]}`,
                subject: `${interaction.client.config.options.mailSubject}`,
                html: `
                    ${text}
                `,
            };

            transporter.sendMail(options, async function (error, info) {
                if (error) {
                    console.log('\x1b[31m', `[-] Mail gönderilmedi. (${error})`);
                }
                
            });
            await interaction.editReply({ content: `gonderildi ` , ephemeral: true })
        }
    }

},

};

#

Hocam yukarıdaki kodlarda bir şey ekletmek istiyorum bu kodlar çoklu maillere aynı mesajı gönderme kodlarıdır

#

istediğim şey, /mesajat yazdığımda zorunlu bir dosya gönderme seçeneğinin çıkması ve ardından dosyayı oraya koyup entere bastığımızda önümüze forum geliyor sonra oraya mailleri ve içeriği yazıp göndere tıkladığımızda maillere göndermesini istiyorum

#

kod sorunsuz çalışıyor

#

fakat dosya da göndermesini istiyorum

#

/mesajat <dosya> böyle

#

dosyayı da belirttiğimiz mail adreslerine gönderecek

#

modalda yazdğımız text ile birlikte

#

@wide quest

#

yardımcı olabilirmisiniz?

severe shoal
#

bir option ekleyeceksin

#

buradan typelara bakabilirsin

fast flame
#

option var zaten

severe shoal
#

doğru type ile eklediğinde bir dosya eki eklemene izin verecek kod

fast flame
#

onu maile göndertemiyorum

severe shoal
#

bu bir görsel mi olacak

fast flame
#
client.on("ready", () => {
    client.application.commands.create({
      name: "mesajat",
      description: "Birine mesaj atarsınız.",
      options: [{name: "resim", description: "Gondereceginiz resim.", required: false, type: 11}]
    })
  })
#

bak var option

severe shoal
#

görselleri url şeklinde yollayabilirsiniz ama dosya konusunda bir fikrim yok

#

daha önce bot üzerinden mail atma gereksinimi duymadığım için hiç yapmamıştım

fast flame
#

algılatsak

#

benim için kolay gerisi

fast flame
#

onu yapabilirsen gerisini yaparım

#

@severe shoal

static cairn
#

sorun ne

fast flame
#

hocam

#

optiondaki attachmenti

#

maile ekleyip

#

gönderecek

severe shoal
#

interaction.options.get('option').attachment tarzı bir şeydir sanırım attachment nasıl dönüyor bilmiyorum tam

static cairn
#

bunu nodemailler ile

fast flame
#

getAttachment ile de denedim

static cairn
#

html image tagina koyup

#

gonderebilirsin

fast flame
#

kodlar yukarda

static cairn
#

teldeyim

fast flame
#

sadece attachmenti gönderemiyom

static cairn
#

codeBlock cok kotu duruyor

severe shoal
#

kanka oturup kod yazmak istemiyorum nasıl olmuyor bir interactiona eklediğin attackment optionını nasıl alacaksın başka şekilde

static cairn
#

bakmadim koda

static cairn
#

suan ne yapmaya calisiyorsun onu anlamadim

#

tam

fast flame
#

kanka

#

bak

#

botun dmsinden

#

/mesajat <dosya> yazdığımızda

#

bot önümüze modal açıyor

#

2 tane input oluyor paragraph olarak, oraya 1. de mailleri giriyoz 2.de gönderilecek yazıyı, nodemailler de bizim google hesabımıza bağlanıp o maillere belirttiğimiz yazıyı gönderiyor

#

benim istediğim de /mesajat <dosya> daki dosyayıda yazı ile birlikte dosya halinde göndermesi

#

@static cairnböyle

static cairn
#

database e kullanici idsiyle ittirip

#

modalsubmit oldugunda

#

datayi alabilirsin

#

sonrada sildirtirsin

#

veya id ile

#

cihaza writelayip

#

dosyayi cektirebilirsin

fast flame
#

kanka

#

anlamadım

#

ne dediğini

#

yazıp veremezmisin

#

@static cairnhe

#

@severe shoal@static cairnbeyler yokmu fikriniz

severe shoal
#

kanka ne bileyim benim botla mail yollama işim olmuyor ki bir tane botumda vardı o sadece onda da hesap onayı için onu da site üzerinden yapıyordum adamlar siteye input olarak giriyordu

#

direkt bot üzerinden hiç dosya yollamadım

#

şu an oturup kod yazmakla da uğraşamam

fast flame
#

kod yaaz demiyorum

#

yönlendir bari

severe shoal
#

kankacım discord.js'in 2 tane dökümantasyonu var (biri guide) bir tane api types ve bunların çalışmasıyla ilgili sitesi var internette sayısız kaynak var discord.js'in offical sunucusu var

fast flame
#

@severe shoalsadece şu optionsdaki dosyayı mongo veya herhangi bri dataya nasıl kayıt ettirirz onu yazsan yeter

severe shoal
#

al sana yönlendirme

severe shoal
#

bir değer ata let ile

#

let attachmentOption

#

şeklinde

#

ona eşitle

#

yada direkt attachment oluştur discord.js içinden

#

sonra onun urlsini kullanmayı dene

fast flame
#

yokkanka

#

öyle değil işte

#

@wide questgelince bakar

static cairn
#

modal interactionda

#

datayi çekip imagei belirttirebilirsn

#

sonrada datayı sildirtirsin

fast flame
static cairn
#

pc geciyim örnek atayim

fast flame
#

tşkler

fast flame
static cairn
#
var fs = require('fs'),
    request = require('request');

var download = function(uri, filename, callback){
  request.head(uri, function(err, res, body){
    console.log('content-type:', res.headers['content-type']);
    console.log('content-length:', res.headers['content-length']);

    request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
  });
};

download('https://www.google.com/images/srpr/logo3w.png', 'google.png', function(){
  console.log('done');
});

telden bunu buldm stackoverdan bunu kullanabilirsin

#

path olarak userin idsini kaydettirip

#

modal submit oldugundada dosyayı çekip koydurablrsn

fast flame
static cairn
#

@fast flame resim file mı

#

yoksa urlmi

fast flame
#

yukarda kodlar var işte knk

#

yazdım

fast flame
static cairn
#

niye direk url olarak almıyorsun ki

fast flame
static cairn
#

bide attachment option eklememişsin

#

eğer url iel yapıcaksan indirtmene gerek yok

fast flame
static cairn
#

direk dbden ittirmek daha basit

#

mantıklı

fast flame
#

tamamda

#

mail de dosya olarak göndermesi lazım

static cairn
#
<image src="link/binary">
<img src="link/binary">
#

ikisinden biri

#

bazı yerlerde image çalışmıyor

#

bazı yerlerdede img

fast flame
#

reis

static cairn
#

unuttum nodemaillerın hangisini kabul

fast flame
#

resim göndermiyecek

static cairn
#

ettiğini

fast flame
#

dosya gönderecek dosya

#

file

static cairn
#

discorddan maile niye file

#

gönderiyosun ki

fast flame
#

şirketimiz var

static cairn
#

desene file diye

#

bende resim sanıyodum

fast flame
#

😄

static cairn
#

direk nodemaillerdan

#

gönderiyosun onu

fast flame
fast flame
#

yapamıyorum ben

#

yardım lazım

#

attığım kodlar için uyarlanması lazım

#

yapamıyorum kaç defa denedim olmadı

static cairn
#

ne file ı

#

göndericeksin

#

uzantı

fast flame
#

.pdf

#

.rar

#

.zip

#

bu 3ü şeklinde

#

@static cairnböyle 3tane

#

olsa

#

çok iyi olur

static cairn
#
attachments:[{attachmentfilename: 'text3.txt',path: '/path/to/file.txt'}]
#

sonlarını hangi file istersen direk

#

ayarlarsın

fast flame
#

hocam

#

bune

#

napcam bunu ben

static cairn
#

nodemailler

#

from vb yazan

#

kısım varya

fast flame
#

he

#

tamam

#

anladım

static cairn
#

oraya atman lzm

fast flame
#

reis

#

bunu bende biliyordum

#

benim sorunu anlamadın sen

fast flame
fast flame
fast flame
fast flame
fast flame
#

@static cairnonu yapamıyorum

static cairn
#

attachment kısmını loglatıp atsana bi

#

ss neleri döndürüyo

#

hiç kullanmadım attachment option

#

veri alması getAttachment olması lazımdı

#

yanlş hatırlamıyosam

fast flame
#

client.on("ready", () => {
client.application.commands.create({
name: "mesajat",
description: "Birine mesaj atarsınız.",
options: [{name: "dosya", description: "Gondereceginiz dosya.", required: false, type: 11}]
})
})@static cairnbu doğrumu attachment için