Որոշ ժամանակ անցկացվելով հայտնի կայքերում, ինչպիսիք են Reddit-ը և Twitch-ը, ակնհայտ է դառնում, որ բոտերը լայնորեն օգտագործվում են սովորական, կրկնվող առաջադրանքների ավտոմատացման համար:

Դրանց տարածվածությունը զուգահեռ է, թե ինչպես են ծրագրավորողները փորձում պահպանել DRY սկզբունքները՝ մաքուր, հակիրճ կոդ ստեղծելու համար: Ինչու՞ կրկնվել, եթե պետք չէ: Թեև ես նրանց ամեն օր տեսնում էի համացանցը զննարկելիս, մինչև վերջերս երբեք շատ չէի մտածել դրանց մասին…

Ես և իմ ընկերները հաճախ բացակայում ենք բազմաթիվ անդամներ ունեցող չաթերից, և որպես այդպիսին, զրույցները խճճվում են բովանդակությամբ, որը միշտ չէ, որ վերաբերում է զրույցի թեմային: Նույնիսկ վերջերս մենք սկսել էինք Dungeons and Dragons արշավը Discord-ի վրա, և երբեմն ես ուզում էի մուտք ունենալ առցանց զառախաղ կամ պաշտոնական ձեռնարկ, առանց ոլորելու բոլոր հաղորդագրությունները: Այն իրավիճակներում, երբ զրույցի հաճախորդը չի առաջարկում որոնման հնարավորություն, ես մտածում էի, թե արդյոք կա՞ որևէ միջոց, որպեսզի ես կարողանամ օգտվել այն տեղեկատվությանը, որը ես գիտեի, որ թաղված է հարյուրավոր հաղորդագրությունների տակ: Պատասխանը, իհարկե, բոտի ծրագրավորումն էր, որպեսզի գրավի այս բաներն ինձ համար:

Եվ այսպես, ես սկսեցի հետազոտություններ կատարել Discord-ում առաջադրանքները ավտոմատացնելու համար DnD բոտ ստեղծելու վերաբերյալ: Պարզվում է, որ Discord բոտ ստեղծելու համար անհրաժեշտ է ընդամենը մի փոքր պարզ JavaScript (որը ես հարմար կերպով ուսումնասիրել եմ վերջին ամսվա ընթացքում) և որոշ հատուկ մոդուլներ: Ստորև բերված հատվածում ես ուրվագծելու եմ իմ ստեղծած փոքրիկ բոտը DnD Discord սերվերի համար, որտեղ ես գտնվում եմ:

Քայլ 1. Ստեղծեք Ձեր Package.json-ը

Ստեղծեք նախագծի թղթապանակ ձեր բոտի համար: Տերմինալից cd-ը մտեք ծրագրի գրացուցակ և գործարկեք npm init-ը:Սա ձեզ կառաջարկի ձևաթուղթ լրացնել JSON ֆայլը նախագծի տեղեկություններով: Սեղմեք Enter այս հուշումների միջոցով և մուտքագրեք այոերբ խնդրվում է հաստատել, թե արդյոք ձևի տվյալները լավ են: Նախորդ կոդը ձեր նախագծի գրացուցակում կթողարկի package.json ֆայլ, որը նման է հետևյալին.

Այստեղ մեր «հիմնական» բանալին ցույց է տալիս «index.js» ֆայլը, որը մենք դեռ չենք ստեղծել: Դրանում կլինեն բոլոր հրամանները, որոնց կհետևի մեր բոտը:

Քայլ 2. Ստեղծեք ձեր Index.js-ը, ստեղծեք Discord հավելված

Նախքան index.js ֆայլին անցնելը, մենք պետք է տեղադրենք discord.js մոդուլը, որը կօգնի փոխազդել Discord API-ի հետ: Տերմինալում մենք կաշխատենք npm install discord.js — պահպանելորը մենք հետագայում կպահանջենք մեր index.js-ի ներսում: Ծրագրի գրացուցակի ներսում ստեղծեք index.js ֆայլ, որը կպարունակի այն ամբողջ տրամաբանությունը, որին պետք է հետևի բոտը: index.js ֆայլի վերևի հատվածը պետք է նման լինի ստորև բերված կտրված կոդի.

Այստեղ մենք պահանջում ենք մեր նոր տեղադրած մոդուլը, ինչպես նաև ստեղծում ենք Discord հաճախորդի օրինակ: Այս Discord հաճախորդի բոլոր օրինակները պահանջում են մուտքի նշան (token-ը կարող է ստեղծվել՝ հետևելով հղման ցուցումներին՝ https://github.com/reactiflux/discord-irc/wiki/Creating-a-discord-bot-& -getting-a-token) 6-րդ տողում մենք տեսնում ենք կոդ, որը գործում է շատ նման, ինչպես JS-ում սովորական իրադարձությունների լսողին: Երբ օգտատերը մուտքագրում է հաղորդագրություն, մենք ավտոմատ կերպով հուշում ենք բոտին գործարկել հետ կանչի ֆունկցիայի մեջ պարունակվող կոդը: Հետադարձ զանգի այս ֆունկցիան կպարունակի երկու առաջադրանքների տրամաբանությունը, որոնք, իմ կարծիքով, առավել օգտակար կլինեն այն անձի համար, որն օգտագործում է սա DnD արշավի համար.

  1. Զառեր գցել օգտվողի համար, որը տրված է հատուկ գլորումներով և զառերով:
  2. Հղում դեպի Պաշտոնական Dungeons and Dragons ձեռնարկը:

Քայլ 3. Գրել հետադարձ զանգի գործառույթը

Վերոնշյալը կարճ տրամաբանությունն է, որը գրված է վերը նշված երկու առաջադրանքները կատարելու համար: Սերվերի օգտատերերը ցանկացած պահի կարող են մուտքագրել «!help»՝ դիտելու այն տարբերակները, որոնք նրանց տալիս է բոտը: Եթե ​​նրանք ցանկանում են դիտել պաշտոնական ձեռնարկը, «! handbook» մուտքագրելուց հետո նրանց կներկայացվի հղում: Եթե ​​նրանք ցանկանում են օգտագործել բոտի զառեր գլորելու գործառույթը, նրանք պետք է նշեն միայն իրենց ուզած գլորումների քանակը, ինչպես նաև զառերի տեսակը: Զառ գլորելու համար օրինակելի հրամանը կլինի «!roll 4d6», որտեղ 4-ը նշում է գլորումների քանակը, իսկ 6-ը նշում է այդ ձեռոցի կողմերի քանակը:

Ինչպես ցույց է տրված, այն ամենը, ինչ անհրաժեշտ է լիարժեք ֆունկցիոնալ (և անկեղծորեն բավականին օգտակար) բոտ ստեղծելու համար JavaScript-ի հիմնական գիտելիքներն են: Հենց հիմա կոդը գործարկելու համար գործարկեք node . մինչև նախագծի գրացուցակում եք: Թեև սարսափելի չէ, այն այնքան էլ ֆունկցիոնալ չէ, որքան ես կցանկանայի: Հետագա աշխատանքի համար ես կցանկանայի ավելի հարմարության համար հավելվածն անվճար աշխատեցնել AWS T2 օրինակից: