From 05f3b48f11fe2b5b119fa67e6fdd70ba55d34e5e Mon Sep 17 00:00:00 2001 From: cirroskais Date: Sat, 20 Apr 2024 00:02:06 -0400 Subject: [PATCH] yes --- bun.lockb | Bin 6406 -> 7103 bytes package.json | 41 +++++++++++++++-------------- src/interactions/ai.ts | 40 ++++++++++++++++++++++++++++ src/interactions/default.ts | 12 ++------- src/lib/handlers/CommandHandler.ts | 7 ++--- src/lib/types/command.d.ts | 2 +- 6 files changed, 68 insertions(+), 34 deletions(-) create mode 100644 src/interactions/ai.ts diff --git a/bun.lockb b/bun.lockb index e628973eb63ba41d7d47a896e33d9a2f4be9ffb3..53338fa34824273effc921fdbc9933db30266a07 100755 GIT binary patch delta 1826 zcmc&!drTZ<5dU^>;T}Bh!O>&yG$mFcRauUscTnMuhgwW?q9l-(Di*M|h$wBq@KE7u znrf;Nt^+9*n%auk_@WhCYMa>f4-BytYqfesV(`&cD%KFG37Sx6_IC9y5&w0P+1c6O z@0)MF`DSOQ>r_s+wDR4#>xmbhpYi@V6Kd>z;Vti(YT=n|OUBoGUK(onVm`Gs)4^mh z2iGlk+;0v$;b%N!fyRc0nkQ=*>kDqT=}S4rkP(;;98BzemHE z9_~E*~CUJiePdp0EiytB{L^ z#lSZ14mix|%!B9^;a3dEVo|M#q!S{}p|=(h%qL1N!RK5$zmbDKIG@;q+549waWl}y z7lG@^%fhYkd4h4V=*UxP7poDd1*dwNSvP3eYb2_{{>G z5PaMSEC_j>bUac_nQ4_Hk)@+!k!2x^TT)SFiL_X2WHGgn@MQ+vivscGHO}oW@I$nEvpei#s?0Jvfv+m~sf9r+bw@r85yzTe? z;mY}AyH4?Zq1KVT$90wg*8(fMljE{g~AWKV-q_aVOKhCXUl0?f(KHH0b*QIHW182piWnP9r`f8LEt4`{IqTQ0=Ly&MC0T0(MgxOc_m{82n8AMLlRl#Q`9<4)vN1)q;vc zfKjg%l7n(cUfxL&>Anfpp;F6Y<>Z#7?-ZKanck@zDKv3ZOtthoD2d*nG!ju06iX?E zlx?4-JW&k!54k*5Ps6CGzgC@c>MY{vf03mRpBOEmPA8swBwO-GE+@Mk5gLYLTy4Go zqhGf2Tpp%P6Hy(LR|bsbp`#TZLLgvv=~cosoHUDB>HzJ3-~U8TdDF#z0+eHDEK6YT z7`xK{8DF3v@PIjaxfxg9voO4^tE2rkQR?g>j zOHRqfdf=2rbgQE~n7QGVw4>hDJlElJN?BP_wmRHjKhxK?zyAE=h~!FcDa*-1kdP$a zst$X7WB$ii%U(T+xLb00q*ZKODZg$RtW7G0?j)!EO}t*J@s3>gS*|s4F_*dqCEWp& zNxNXH)p1++f-*BQ!!H?5+{`I8Z)tC-t7&f8lCk-*=11#@nHKp0`H^l$_~vNY$R_JS F;V&&qfr9`5 delta 1418 zcmcgsO-K}R6#xHccim52*WGn?)JQrQ8LT?GtD=rlK^7uPE0(2_eV_?eELN9tiSQsK zF7HrkRC?%ANVXVZ(Z@lfGV-Vp-b&~oNr6$Y_TKDFxP*4=4{zSQ`MvM={_~==Umo)B z%0FDSySz{uXkE?XC!%X>WACm$JX7*KHrw+R!m+*f3qGbEXS8{{{g5*u;4>N(t?!Y$ z7>l$=C&k*Jz?d6_i{XS$1u`4TZUbXhvAi|=VMJtCmhM?-zvymI| zOBxdCV~bTiY6d3EJer)T$)d)!Nim({XEi3qJ^g0T0v+k88QR65p>%s!YNyll@%scsNN=m*PaB~;kccw z;t0(oL#g0$5Hw*Iq1RCpd*#UHu^*}51lvt**B>~c*;SRpSbRNksI4@b1x+D69VT2s zKTU@wn2KaZqA7Wi(vfig8BM8%1Uz@iB(IOW&{7bbf<(jBmxLCB-f0oY-9}8;p#{>C zTBp#|U%Xl>r!?lZa5dUBvQ-|HgRQ+~O0FEt4R^uo41j%}jGSrIMU{wtpO%g^MMlFSe{lyCcqQd;JRi%TqyM(7XDesFG>$w) z%Ya`F`b*f5*5!FO^n3SU0x;{9v+{6&IG4z^vcMd_lonU_0{!&(AR}`iwoM#2{su2@ B^_Tzv diff --git a/package.json b/package.json index aed6a91..569d77e 100644 --- a/package.json +++ b/package.json @@ -1,22 +1,23 @@ { - "name": "bot-template", - "module": "src/index.ts", - "devDependencies": { - "@discordeno/types": "^19.0.0-next.d81b28a", - "@types/bun": "latest" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "type": "module", - "dependencies": { - "@discordeno/bot": "^19.0.0-next.d81b28a", - "@discordeno/rest": "^19.0.0-next.d81b28a" - }, - "scripts": { - "dev": "bun run --watch src/index.ts", - "bot:list": "bun run bin/list.js", - "bot:delete": "bun run bin/delete.js", - "bot:update": "bun run bin/update.js" - } + "name": "bot-template", + "module": "src/index.ts", + "devDependencies": { + "@discordeno/types": "^19.0.0-next.d81b28a", + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "type": "module", + "dependencies": { + "@discordeno/bot": "^19.0.0-next.d81b28a", + "@discordeno/rest": "^19.0.0-next.d81b28a", + "ollama": "^0.5.0" + }, + "scripts": { + "dev": "bun run --watch src/index.ts", + "bot:list": "bun run bin/list.js", + "bot:delete": "bun run bin/delete.js", + "bot:update": "bun run bin/update.js" + } } diff --git a/src/interactions/ai.ts b/src/interactions/ai.ts new file mode 100644 index 0000000..0c618f5 --- /dev/null +++ b/src/interactions/ai.ts @@ -0,0 +1,40 @@ +import type { Command } from "../lib/types/command"; +import { type Interaction } from "@discordeno/bot"; +import SlashCommand from "../lib/classes/SlashCommand"; +import { Ollama } from "ollama"; + +const ollama = new Ollama({ host: "http://host.docker.internal:11434" }); + +export default class extends SlashCommand implements Command { + name = "ai"; + description = "Send a message to llama3."; + options = [{ type: 3, name: "input", description: "Text input to send to llama3.", required: true }]; + + constructor() { + super(); + } + + async run(interaction: Interaction) { + await interaction.defer(); + + const input = interaction.data?.options?.find((_) => _.name === "input")?.value as string; + let fullMessage = ""; + let index = 0; + + const response = await ollama.chat({ + model: "terrye", + messages: [{ role: "user", content: input }], + stream: true, + }); + + for await (const part of response) { + fullMessage += part.message.content; + index++; + + if (index % 10 === 0) await interaction.edit(fullMessage); + if (part.done) await interaction.edit(fullMessage); + } + + return false; + } +} diff --git a/src/interactions/default.ts b/src/interactions/default.ts index 32f8862..dcec7af 100644 --- a/src/interactions/default.ts +++ b/src/interactions/default.ts @@ -1,14 +1,6 @@ import type { Command } from "../lib/types/command"; -import { - MessageComponentTypes, - TextStyles, - type Interaction, - type InteractionResponse, - InteractionResponseTypes, -} from "@discordeno/bot"; +import { InteractionResponseTypes } from "@discordeno/bot"; import SlashCommand from "../lib/classes/SlashCommand"; -import Modal from "../lib/classes/Modal"; -import { collectModal } from "../lib/handlers/ModalHandler"; export default class extends SlashCommand implements Command { name = "default"; @@ -19,7 +11,7 @@ export default class extends SlashCommand implements Command { super(); } - async run(interaction: Interaction) { + async run() { return { type: InteractionResponseTypes.ChannelMessageWithSource, data: { content: "my name is terry and im going to destroy thgis world" }, diff --git a/src/lib/handlers/CommandHandler.ts b/src/lib/handlers/CommandHandler.ts index c4f36c2..fa57fd1 100644 --- a/src/lib/handlers/CommandHandler.ts +++ b/src/lib/handlers/CommandHandler.ts @@ -17,9 +17,10 @@ export function handle(interaction: Interaction) { resolved .run(interaction) - .then((response: InteractionResponse) => - REST.sendInteractionResponse(interaction.id, interaction.token, response) - ) + .then((response: InteractionResponse | boolean) => { + if (!response) return; + REST.sendInteractionResponse(interaction.id, interaction.token, response as InteractionResponse); + }) .catch((e: Error) => { console.log("CommandHandler.ts -> Exception"); console.log(e); diff --git a/src/lib/types/command.d.ts b/src/lib/types/command.d.ts index 3112e00..57e3dcf 100644 --- a/src/lib/types/command.d.ts +++ b/src/lib/types/command.d.ts @@ -1,6 +1,6 @@ import { type Interaction, type InteractionCallbackData, type InteractionResponse } from "@discordeno/bot"; interface Command { - run(interaction: Interaction): Promise; + run(interaction: Interaction): Promise; autocomplete?(interaction: Interaction): Promise; }