const Discord = require("discord.js"); const fetch = require("node-fetch"); const fs = require('fs'); const server = "192.168.1.70"; class Fourchat { async random_prompt() { const response = await fetch(`http://${server}:7860/run/textgen`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ data: [ `----- --- 865467536 `, 250, //max tokens true, //do_sample 0.63, //temperature 0.98, //top_p 1, //typical_p 1.05, //rep penalty 0, //top_k 0, //min_length 0, //no_repeat_ngram_size 1, //num_beams 0, //penalty_alpha 1, //length_penalty false, //early_stopping ] }) }); const response_json = await response.json(); return response_json; } async prompt(input_text) { const response = await fetch(`http://${server}:7860/run/textgen`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ data: [ `----- --- 865467536 ${input_text} --- 865467537 >>865467536 `, 250, //max tokens true, //do_sample 0.63, //temperature 0.98, //top_p 1, //typical_p 1.05, //rep penalty 0, //top_k 0, //min_length 0, //no_repeat_ngram_size 1, //num_beams 0, //penalty_alpha 1, //length_penalty false, //early_stopping ] }) }); const response_json = await response.json(); return response_json; } async prompt_reply(input_text1,input_text2) { const response = await fetch(`http://${server}:7860/run/textgen`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ data: [ `----- --- 865467535 ${input_text1} --- 865467536 >>865467535 ${input_text2} --- 865467537 >>865467536 `, 250, //max tokens true, //do_sample 0.63, //temperature 0.98, //top_p 1, //typical_p 1.05, //rep penalty 0, //top_k 0, //min_length 0, //no_repeat_ngram_size 1, //num_beams 0, //penalty_alpha 1, //length_penalty false, //early_stopping ] }) }); const response_json = await response.json(); return response_json; } find_response(res) { const startIndex = res.indexOf("865467537"); const output_only = res.slice(startIndex+9); const responseIndex = output_only.indexOf(">>865467536"); const s = output_only.slice(responseIndex+12).split("---")[0]; return s.trim(); } constructor() { this.matches = [ "4chat", "botmention", "botrandom" ]; } async action(msg, botrandom) { let chan = msg.channel; try { const input_text = msg.content.replace("!4chat","").replace(/<@.+?>/,"anon").trim(); console.log(`Input Text: ${input_text}`); await chan.sendTyping(); if (botrandom == "botrandom" || msg.content.startsWith('!botrandom')) { const output_json = await this.random_prompt(); const output_text = (output_json.data[0]); const startIndex = output_text.indexOf("865467536"); const output_only = output_text.slice(startIndex+9).split("---")[0].trim(); console.log(`Generating random nonsense: ${output_only}`); chan.send(output_only); } else if (msg.reference) { const repliedTo = await msg.channel.messages.fetch(msg.reference.messageId); const oldReply = repliedTo.content; const output_json = await this.prompt_reply(oldReply,input_text); const output_text = (output_json.data[0]); const trimmed_text = this.find_response(output_text); console.log(`Generated Reply: ${trimmed_text}`); chan.send(trimmed_text); } else { const output_json = await this.prompt(input_text); const output_text = (output_json.data[0]); const trimmed_text = this.find_response(output_text); console.log(`Generated Message: ${trimmed_text}`); chan.send(trimmed_text); } } catch (e) { chan.send(`Error: ${e}`); } } } module.exports = Fourchat;