Remove CLIENT_UID Environment Variable (#123)
* Remove: Client UID References * Update: version increment
This commit is contained in:
@@ -4,9 +4,6 @@ CLIENT_TOKEN = BOT_TOKEN
|
|||||||
# model for the bot to query from (i.e. llama2 [llama2:13b], mistral, codellama, etc... )
|
# model for the bot to query from (i.e. llama2 [llama2:13b], mistral, codellama, etc... )
|
||||||
MODEL = MODEL_NAME
|
MODEL = MODEL_NAME
|
||||||
|
|
||||||
# discord bot user id for mentions
|
|
||||||
CLIENT_UID = BOT_USER_ID
|
|
||||||
|
|
||||||
# ip/port address of docker container, I use 172.18.0.3 for docker, 127.0.0.1 for local
|
# ip/port address of docker container, I use 172.18.0.3 for docker, 127.0.0.1 for local
|
||||||
OLLAMA_IP = IP_ADDRESS
|
OLLAMA_IP = IP_ADDRESS
|
||||||
OLLAMA_PORT = PORT
|
OLLAMA_PORT = PORT
|
||||||
|
|||||||
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -32,7 +32,6 @@ jobs:
|
|||||||
touch .env
|
touch .env
|
||||||
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
||||||
echo MODEL = ${{ secrets.MODEL }} >> .env
|
echo MODEL = ${{ secrets.MODEL }} >> .env
|
||||||
echo CLIENT_UID = ${{ secrets.CLIENT_UID }} >> .env
|
|
||||||
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
||||||
echo OLLAMA_PORT = ${{ secrets.OLLAMA_PORT }} >> .env
|
echo OLLAMA_PORT = ${{ secrets.OLLAMA_PORT }} >> .env
|
||||||
|
|
||||||
@@ -60,7 +59,6 @@ jobs:
|
|||||||
touch .env
|
touch .env
|
||||||
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
||||||
echo MODEL = ${{ secrets.MODEL }} >> .env
|
echo MODEL = ${{ secrets.MODEL }} >> .env
|
||||||
echo CLIENT_UID = ${{ secrets.CLIENT_UID }} >> .env
|
|
||||||
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
||||||
echo OLLAMA_PORT = ${{ secrets.OLLAMA_PORT }} >> .env
|
echo OLLAMA_PORT = ${{ secrets.OLLAMA_PORT }} >> .env
|
||||||
|
|
||||||
|
|||||||
1
.github/workflows/coverage.yml
vendored
1
.github/workflows/coverage.yml
vendored
@@ -29,7 +29,6 @@ jobs:
|
|||||||
touch .env
|
touch .env
|
||||||
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
||||||
echo MODEL = ${{ secrets.MODEL }} >> .env
|
echo MODEL = ${{ secrets.MODEL }} >> .env
|
||||||
echo CLIENT_UID = ${{ secrets.CLIENT_UID }} >> .env
|
|
||||||
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
||||||
echo OLLAMA_PORT = ${{ secrets.OLLAMA_PORT }} >> .env
|
echo OLLAMA_PORT = ${{ secrets.OLLAMA_PORT }} >> .env
|
||||||
|
|
||||||
|
|||||||
1
.github/workflows/release.yml
vendored
1
.github/workflows/release.yml
vendored
@@ -25,7 +25,6 @@ jobs:
|
|||||||
touch .env
|
touch .env
|
||||||
echo CLIENT_TOKEN = NOT_REAL_TOKEN >> .env
|
echo CLIENT_TOKEN = NOT_REAL_TOKEN >> .env
|
||||||
echo MODEL = ${{ secrets.MODEL }} >> .env
|
echo MODEL = ${{ secrets.MODEL }} >> .env
|
||||||
echo CLIENT_UID = ${{ secrets.CLIENT_UID }} >> .env
|
|
||||||
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
||||||
echo OLLAMA_PORT = ${{ secrets.OLLAMA_PORT }} >> .env
|
echo OLLAMA_PORT = ${{ secrets.OLLAMA_PORT }} >> .env
|
||||||
|
|
||||||
|
|||||||
1
.github/workflows/test.yml
vendored
1
.github/workflows/test.yml
vendored
@@ -40,7 +40,6 @@ jobs:
|
|||||||
touch .env
|
touch .env
|
||||||
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
||||||
echo MODEL = ${{ secrets.MODEL }} >> .env
|
echo MODEL = ${{ secrets.MODEL }} >> .env
|
||||||
echo CLIENT_UID = ${{ secrets.CLIENT_UID }} >> .env
|
|
||||||
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
||||||
echo OLLAMA_PORT = ${{ secrets.OLLAMA_PORT }} >> .env
|
echo OLLAMA_PORT = ${{ secrets.OLLAMA_PORT }} >> .env
|
||||||
|
|
||||||
|
|||||||
@@ -7,11 +7,10 @@ services:
|
|||||||
build: ./ # find docker file in designated path
|
build: ./ # find docker file in designated path
|
||||||
container_name: discord
|
container_name: discord
|
||||||
restart: always # rebuild container always
|
restart: always # rebuild container always
|
||||||
image: kevinthedang/discord-ollama:0.6.1
|
image: kevinthedang/discord-ollama:0.6.2
|
||||||
environment:
|
environment:
|
||||||
CLIENT_TOKEN: ${CLIENT_TOKEN}
|
CLIENT_TOKEN: ${CLIENT_TOKEN}
|
||||||
MODEL: ${MODEL}
|
MODEL: ${MODEL}
|
||||||
CLIENT_UID: ${CLIENT_UID}
|
|
||||||
OLLAMA_IP: ${OLLAMA_IP}
|
OLLAMA_IP: ${OLLAMA_IP}
|
||||||
OLLAMA_PORT: ${OLLAMA_PORT}
|
OLLAMA_PORT: ${OLLAMA_PORT}
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@@ -18,10 +18,6 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
* You will also need your App's **Client ID**, navigate to **OAuth2** and copy your id.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
* That should be all of the environment variables needed from Discord, now we need this app on your server.
|
* That should be all of the environment variables needed from Discord, now we need this app on your server.
|
||||||
* Navigate to **Installation** and Copy the provided **Install Link** to allow your App to your server.
|
* Navigate to **Installation** and Copy the provided **Install Link** to allow your App to your server.
|
||||||
* You should set the **Guild Install** permissions as you like, for this purpose we will allow admin priviledges for now. Ensure the **bot** scope is added to do this.
|
* You should set the **Guild Install** permissions as you like, for this purpose we will allow admin priviledges for now. Ensure the **bot** scope is added to do this.
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
## To Run Locally (without Docker)
|
## To Run Locally (without Docker)
|
||||||
* Run `npm install` to install the npm packages.
|
* Run `npm install` to install the npm packages.
|
||||||
* Ensure that your [.env](../.env.sample) file's `OLLAMA_IP` is `127.0.0.1` to work properly.
|
* Ensure that your [.env](../.env.sample) file's `OLLAMA_IP` is `127.0.0.1` to work properly.
|
||||||
* You only need your `CLIENT_TOKEN`, `MODEL`, `CLIENT_UID`, `OLLAMA_IP`, `OLLAMA_PORT`.
|
* You only need your `CLIENT_TOKEN`, `MODEL`, `OLLAMA_IP`, `OLLAMA_PORT`.
|
||||||
* The ollama ip and port should just use it's defaults by nature. If not, utilize `OLLAMA_IP = 127.0.0.1` and `OLLAMA_PORT = 11434`.
|
* The ollama ip and port should just use it's defaults by nature. If not, utilize `OLLAMA_IP = 127.0.0.1` and `OLLAMA_PORT = 11434`.
|
||||||
* Now, you can run the bot by running `npm run client` which will build and run the decompiled typescript and run the setup for ollama.
|
* Now, you can run the bot by running `npm run client` which will build and run the decompiled typescript and run the setup for ollama.
|
||||||
* **IMPORTANT**: This must be ran in the wsl/Linux instance to work properly! Using Command Prompt/Powershell/Git Bash/etc. will not work on Windows (at least in my experience).
|
* **IMPORTANT**: This must be ran in the wsl/Linux instance to work properly! Using Command Prompt/Powershell/Git Bash/etc. will not work on Windows (at least in my experience).
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "discord-ollama",
|
"name": "discord-ollama",
|
||||||
"version": "0.6.1",
|
"version": "0.6.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "discord-ollama",
|
"name": "discord-ollama",
|
||||||
"version": "0.6.1",
|
"version": "0.6.2",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"discord.js": "^14.15.3",
|
"discord.js": "^14.15.3",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "discord-ollama",
|
"name": "discord-ollama",
|
||||||
"version": "0.6.1",
|
"version": "0.6.2",
|
||||||
"description": "Ollama Integration into discord",
|
"description": "Ollama Integration into discord",
|
||||||
"main": "build/index.js",
|
"main": "build/index.js",
|
||||||
"exports": "./build/index.js",
|
"exports": "./build/index.js",
|
||||||
|
|||||||
@@ -8,14 +8,16 @@ import { getChannelInfo, getServerConfig, getUserConfig, openChannelInfo, openCo
|
|||||||
*
|
*
|
||||||
* @param message the message received from the channel
|
* @param message the message received from the channel
|
||||||
*/
|
*/
|
||||||
export default event(Events.MessageCreate, async ({ log, msgHist, tokens, ollama }, message) => {
|
export default event(Events.MessageCreate, async ({ log, msgHist, tokens, ollama, client }, message) => {
|
||||||
log(`Message \"${clean(message.content)}\" from ${message.author.tag} in channel/thread ${message.channelId}.`)
|
const clientId = client.user!!.id
|
||||||
|
const cleanedMessage = clean(message.content, clientId)
|
||||||
|
log(`Message \"${cleanedMessage}\" from ${message.author.tag} in channel/thread ${message.channelId}.`)
|
||||||
|
|
||||||
// Do not respond if bot talks in the chat
|
// Do not respond if bot talks in the chat
|
||||||
if (message.author.username === message.client.user.username) return
|
if (message.author.username === message.client.user.username) return
|
||||||
|
|
||||||
// Only respond if message mentions the bot
|
// Only respond if message mentions the bot
|
||||||
if (!message.mentions.has(tokens.clientUid)) return
|
if (!message.mentions.has(clientId)) return
|
||||||
|
|
||||||
// default stream to false
|
// default stream to false
|
||||||
let shouldStream = false
|
let shouldStream = false
|
||||||
@@ -113,7 +115,7 @@ export default event(Events.MessageCreate, async ({ log, msgHist, tokens, ollama
|
|||||||
// push user response before ollama query
|
// push user response before ollama query
|
||||||
msgHist.enqueue({
|
msgHist.enqueue({
|
||||||
role: 'user',
|
role: 'user',
|
||||||
content: clean(message.content),
|
content: cleanedMessage,
|
||||||
images: messageAttachment || []
|
images: messageAttachment || []
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import { getEnvVar } from './utils/index.js'
|
|||||||
export const Keys = {
|
export const Keys = {
|
||||||
clientToken: getEnvVar('CLIENT_TOKEN'),
|
clientToken: getEnvVar('CLIENT_TOKEN'),
|
||||||
model: getEnvVar('MODEL'),
|
model: getEnvVar('MODEL'),
|
||||||
clientUid: getEnvVar('CLIENT_UID'),
|
|
||||||
ipAddress: getEnvVar('OLLAMA_IP'),
|
ipAddress: getEnvVar('OLLAMA_IP'),
|
||||||
portAddress: getEnvVar('OLLAMA_PORT'),
|
portAddress: getEnvVar('OLLAMA_PORT'),
|
||||||
} as const // readonly keys
|
} as const // readonly keys
|
||||||
|
|||||||
@@ -10,13 +10,10 @@ export type EventKeys = keyof ClientEvents // only wants keys of ClientEvents ob
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Tokens to run the bot as intended
|
* Tokens to run the bot as intended
|
||||||
* @param channel the channel where the bot will respond to queries
|
|
||||||
* @param model chosen model for the ollama to utilize
|
* @param model chosen model for the ollama to utilize
|
||||||
* @param clientUid the discord id for the bot
|
|
||||||
*/
|
*/
|
||||||
export type Tokens = {
|
export type Tokens = {
|
||||||
model: string,
|
model: string,
|
||||||
clientUid: string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import Keys from "../keys.js"
|
|||||||
* @param message
|
* @param message
|
||||||
* @returns message without client id
|
* @returns message without client id
|
||||||
*/
|
*/
|
||||||
export function clean(message: string): string {
|
export function clean(message: string, clientId: string): string {
|
||||||
const cleanedMessage: string = message.replace(`<@${Keys.clientUid}>`, '').trim()
|
const cleanedMessage: string = message.replace(`<@${clientId}>`, '').trim()
|
||||||
return cleanedMessage
|
return cleanedMessage
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
import { describe, expect, it } from 'vitest'
|
import { describe, expect, it } from 'vitest'
|
||||||
import { getEnvVar, clean } from '../src/utils/index.js'
|
import { clean } from '../src/utils/index.js'
|
||||||
|
|
||||||
|
// Sample UID for testing
|
||||||
|
const sampleId = '123456789'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MentionClean test suite, tests the clean function
|
* MentionClean test suite, tests the clean function
|
||||||
@@ -10,7 +13,7 @@ import { getEnvVar, clean } from '../src/utils/index.js'
|
|||||||
describe('Mentions Cleaned', () => {
|
describe('Mentions Cleaned', () => {
|
||||||
// test for id removal from message
|
// test for id removal from message
|
||||||
it('removes the mention from a message', () => {
|
it('removes the mention from a message', () => {
|
||||||
const message = `<@${getEnvVar('CLIENT_UID')}> Hello, World!`
|
const message = `<@${sampleId}> Hello, World!`
|
||||||
expect(clean(message)).toBe('Hello, World!')
|
expect(clean(message, sampleId)).toBe('Hello, World!')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
Reference in New Issue
Block a user