Discord botu radīšanas dienas un nedienas

atbrauc uz manu māju, paskaties man acīs un tad uzbrūc D:

laikam jaunu par discord botiem. kāpēc gan ne?

Eamu atvērts konkrētākiem ieteikumiem, varam doties super specifiski, vai vaļīgāk. Skatos tādu jau pastāvošu discord tematu nav. Ir iespēja izpausties, uzcept pēc savas patikas voenu, un es šo diskusiju pārcelšu tur :ok_hand:

“Discord botu programmēšana” I guess.
Lai gan izskatās, ka dižas jēgas nav, jo kāds par kaut ko apvainojās, un topiks ir dead.

? haha
es tikai negribēju vilkt vēl sarunu garumā jo pagaidām nedaudz atkal iesprūdu un fokusējos uz to
neatbildēju tev, jo sakaunējos, ka sajaucu lietas
nu gan, nu gan

Neko nesaprotu…

ok, reku ašu uzmetīšu, kā es tiku pie ļoti lobotomizēta bota, ar kuru es tagad smagi cīnos. šo info var atrast arī jebkur citur internetā, bet man nācās paraustīt matus, lai piedabūtu savējo pie dzīvības :[

!!!neuzņemos atbildību par problēmām!!!

ko es izmantoju: notepad++, cmd, node.js, savu privāto discord serveri priekš testēšanas

  1. dodies uz discord developer portal, ielogojies ar savu discord, ja tas jau nav automātiski noticis, un uztaisi jaunu application. vari pievienot bildi, aprakstu, tagus, utt. bet tas nav svarīgi bota funkcionalitātei

  2. dodoties uz tabu Bot nospied Reset Token un saglabā šo kodu un nerādi nevienam citam.grrr. arī neliec šo kodu galvenajā failā, ko radīsi. + šo kodu atkārtoti pēc lapas aizvēršanas vairs nedabūsi, tādēļ pieraksti kaut vai uz lapiņas (hehe)

  3. dodies uz oauth2 > url generator un atzīmē, ka tā scope ir ‘bot’. parādīsies vēl viens lodziņš kurā vari atzīmēt ko vien vēlies, bet man vajadzēja tikai lasīt ziņas/rakstīt ziņas. tad izmantojot saiti, ko redzi apakšā ielūdz botu uz savu serveri

  4. uzinstalē node.js

  5. ieraksti npm init -y lai dzemdētu papildus failus, kas būs nepieciešami botam

  1. ver vaļā cmd un ar to aizej uz konkrēto direktoriju un uztaisi mapīti tur. tad uzinstalē discord.js un dotenv.
npm install dotenv
npm install discord.js 

es izmantoju discord.js. viņu website ar vairāk pamācībām un labākiem paskaidrojumiem bet šis ir quick & dirty daļēji tutoriālis daļēji pieraksts man, lai es atceros, ko darīju.

  1. tad tev vajadzēs uztaisīt 2x failus: index.js un config.js. tajos tu liksi iekšā:
config.js
module.exports = {
  token: "liecsavutokenute"
}
index.js
// inicializē visu
const { Client, Events, GatewayIntentBits } = require('discord.js');
const { token } = require('./config.js'); //ar šo tu norādi, ka tokenu meklē citā failā
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent
] }); // dod nolādētās atļaujas - redzēt serveri/redzēt servera ziņas/lasīt servera ziņas

client.once(Events.ClientReady, readyClient => {
    console.log(`Sveiki, ${readyClient.user.tag}`); //kad bots būs veiksmīgi nokļuvis tiešsaistē, terminālī parādīsies šī ziņa
});

//ar šo tu klausies sūtītās ziņas un atbildi uz tām
client.on('messageCreate', message => {
  console.log(`Received message: ${message.content}`); //parāda, vai vispār bots saņem/saprot ziņas.
  if (message.content.toLowerCase() === 'hi') {
    message.channel.send('owo'); 
  }
});

client.login(token); //šeit atsaucies uz tokenu, ko iecepi config.js 
  1. tad terminālī raksti node index.js un, ja viss notika veiksmīgi un es neaizmirsu iekļaut kādu soli, tavā discord serverī bots iedegsies ar zaļu gaismiņu, terminālis tev teiks ‘Sveiks, botanosaukums#1234’ un tu varēsi teikt botam hi un viņš tevi agresēs un teiks owo.

beigās tavai bota mapei jāizskatās šādi
image

un tad rocies cauri pats visai dokumentācijai un mācies, kā panākt botam darīt to, ko tu gribi. pēc katras koda maiņas gan bots jāizslēdz ar ctrl+c, jāsagaida, kad tas izies offline un tad jāieslēdz atkal ar to pašu node index.js­. Varbūt nav jāgaida, kad tas izies offline, bet es tā daru jo man ir daudz laika.

Javascript gan nav mana iecienītākā valoda, tādēļ neuzņemos atbildību par shit kodu, bet ja tev sanāca šo izveidot, tad apsveicu. Tālāk pēc bota izveidošanas un pieprogrammēšanas vari to laist pasaulē, bet tur ir jāmeklē hosti utt… Es šo personīgi izmantošu tikai privāti (jo es to taisu, lai automatizētu šīs spēles darbību), un tādam nolūkam man pilnīgi pietiek ar lokāli palaistu un tā pie dzīvības uzturētu botu.

daži soļi ir ļoti vague jo rakstot svārstījos starp mērķauditoriju. ja kaut kas nav skaidrs, varu papildināt vēl. taisām savu botu armiju! tie, protams, varēst pateikt tikai ‘owo’ bet arī tas nav zemē metams panākums.

1 Like

FYI, Node projektus parasti sāk ar npm init, un tikai pēc tam instalē dependencies ar npm install ....
Tas pats arī ir teikts discord.js tutoriālī: Installing Node.js and discord.js | discord.js Guide

1 Like

hehe tagad zināšu. pirmā reize strādājot ar to! tūlīt pielabošu, lai būtu korektāk :D

1 Like

Also, silti iesaku izmantot Git (un kaut kādu Git klientu, kaut vai to pašu Git GUI) versiju kontrolei.

Strādā tas ļoti vienkārši:

  1. izveido lokālu repository (git init, bez parametriem)
  2. kad kaut kādas izmaiņas ir veiktas, izveido kommitu ar šīm izmaiņām (ar sakarīgu aprakstu, ko tu tur izdarīji!!!) (git add *, git commit -m "Added proper response to this or that event." - izmantojot Git klientu, var izvēlēties, kurus failus kommito, caur konsoli tor ir baigais gemorojs darīt, neiesaku);
  3. turpini veikt izmaiņas, un katru reizi, kad ir pabeigta viena vesela lieta, taisi jaunu kommitu;
  4. ja kaut kas kādā solī noiet greizi, tu vari revertot to kommitu vai pārlasīt, ko tieši tu tajā kommitā izmainīji, un tādējādi analizēt, kas nogāja greizi;
  5. Kamēr strādā pie kādas fīčas, tikmēr vienmēr Gitā vari paskatīties, kas pašlaik ir kodā izmainīts (git status - saraksts ar izmainītajiem failiem, git diff konkrēti izmaiņām) - šis ļoti noder, kad piemirstās, kas jau ir izdarīts, un kas vēl palicis.
  6. [OPTIONAL] Technically basic fīča - Gitā var taisīt tā saucamos branchus - git branch type/name-here, git checkout type/name-here; type/ prefikss ir vnk for convenience, e.g. feature/new-response-format, bugfix/this-shit-doesnt-work, maintenance/this-crap-again, etc. Tipiski tos sauc par feature branchiem, un pamatbranchu, ar kuru viss sākās - par main branch. Kad tiek uztaisīts jauns branch, visi kommiti iet tikai tajā feature branch, bet ne main branch. Tādējādi var strādāt pie vairākām lietām paralēli un pārslēgties starp tām ar git checkout branch-name, tikai jāatceras vispirms iekommitot izmaiņas, jo ja mēģinās pārslēgties no iesākta brancha ar nepabeigtām izmaiņām uz jebkuru citu branchu, tad izmetīs kļūdu (vai vismaz vajadzētu izmest, baigi sen neesmu termināli izmantojis priekš Git, neatceros). Un, kad feature branch ir pabeigts un viss strādā, tad git checkout main, git merge feature/blabla ← šī komanda ievilks visus kommitus no feature brancha main branchā. Un te ir visjautrākā lieta - var rasties konflikti. Tāpēc optional, jo ar tiem konfliktiem ir jāmāk apieties, un man bieži ir sanācis palīdzēt jaunākiem kolēģiem ar šo.
    Labā ziņa ir tajā, ka, strādājot vienam, pie pavisam vienkārša projekta, var elementāri iztikt bez branchiem.

man no git ir meeeeega alerģija kopš es pastrādāju 2gadus kā sistēmu analītiķis un mani tas traumēja kad es uztaisīju megaupsi un commitoju kaut ko production branchā, jo man, izrādās, bija tāda privilēģija to darīt.
image

bet git gadījumā tad jāatzīmē, ka config.js jāliek .gitignore, lai tavs tokens netiek nekur triekts ārpus tava skatuloka

git ir ļoti forša fīča. bet es mmmmmmmmnemākujoprojām. nepieņemu jautājumus unvai kritiku par šo. programmēšana nav mans maizes darbs :D

1 Like

Uiiiii…

Vai arī varbūt config.js var iebarot, lai nolasa to tokenu no .env faila, un tad .gitignore, ofc, jāliek .env failu. Jo config.js var saturēt citu projektam svarīgu konfigurāciju, kura nav secret, un kurai vajadzētu būt Gitā.
Bet vienkāršāk ir vnk uztaisīt config.js.dist ar placeholder vērtībām, un iemest config.js @ .gitignore, ofc.

Pamēģini bez branchiem, tikai tupa pliekani kommiti main branchā. Vienkārši pašu ideju par katra uzdevuma skaidru atdalīšanu no citiem uzdevumiem papraktizēt. Jo es esmu ievērojis, ka ļoti daudziem cilvēkiem ar šo ir problēmas, patīk visu bāzt vienā maisā, un tad ir baigā problēma atšķetināt, kas ir kas.

Man git ar traumi iedzina, kad kautkas aiziet uz production. Pat ja negr8bēju to branch.

Bļin, a kurš tev deva prod push pieeju? Pull requests ONLY when it comes to prod.

tu man tagad mēģini iebarot sīpolus! bet nu varbūt beidzot iemācīšos gitu. somethingsomethinglaba prasme priekš CVsomething

1 Like

Sīpoli ir veselīgi! :smiley:

Git pašam atvieglos dzīvi, varēsi vismaz revertot atpakaļ uz vecāku versiju kad invitabley kaut ko salaidīsi grīstē :smiley:

Beet īstais jautājums ir vai es Tevi pareizi sapratu un Tu kā ide izmanto notepad++?
If so, why do you hate yourself? Esi cilvēks un izmanto VSCode

Yeah, es to pašu gribēju teikt par Notepad++, bet nepateicu :smiley:

Vispār, man iepriekšējā darbā team leads “programmēja” Notepad++… visu projektu 3 gadu garumā bija tā uzcepis, un dievs vien zin, ko vēl pirms tam. Needless to say, his code was not great, to say the least. Pielauzu pāriet uz PhpStorm, bet hz, vai viņš turpina to lietot pēc manas aiziešanas, gan jau ka par spīti nelieto.

^_^ esmu tas cilvēks, uz kuru rāda ar pirkstu un saka ‘nedari tā’. ikdienā kodu nerakstu, tādēļ man nav nepieciešamības pēc dedicated ide kas appelētu uz cietā, jo es to atvērtu varbūt reizi gadā, kad man paliek nelabi ap apziņu un es izdomāju kaut ko mēģināt uzcept (kā šoreiz).

atkāpieties, nelabie (es pārmetu krustu, bet jūs to neredzat)

VS Code nav IDE, tas ir ļoti advanced text editors.

Any gui ewwww vim pure style.


Esmu newbie in linux, bet zinu cik linux ir parvētis cilvēkus… literal addiction.

1 Like