fix(chat): added option to lock bot to specific channel (#2)
* fix(chat): Added option to lock bot to specific channel. * New updated towards pull #2 * Update README.md --------- Co-authored-by: Mikkel Albrechtsen <mikkel.alb@gmail.com>
This commit is contained in:
parent
6b55fff900
commit
2b0c743a57
@ -52,6 +52,7 @@ The bot can be configured by setting the following environment variables:
|
|||||||
- `REDIS_HOST`: The host for the Redis server.
|
- `REDIS_HOST`: The host for the Redis server.
|
||||||
- `REDIS_PORT`: The port for the Redis server.
|
- `REDIS_PORT`: The port for the Redis server.
|
||||||
- `ADMIN_ID`: The Discord ID of the admin user. This user will have the ability to reset the chat.
|
- `ADMIN_ID`: The Discord ID of the admin user. This user will have the ability to reset the chat.
|
||||||
|
- `CHAT_CHANNEL_ID`: The Discord ID of the specific channel where the bot will chat. Leave this empty to allow the bot to chat in all channels. (default is empty)
|
||||||
- `BOT_NAME`: The name of the bot. This is used for the bot to recognize when it is mentioned in a message.
|
- `BOT_NAME`: The name of the bot. This is used for the bot to recognize when it is mentioned in a message.
|
||||||
- `CHAT_MAX_LENGTH`: The maximum length of the chat history to store in Redis. This is used to limit the amount of memory used by the bot.
|
- `CHAT_MAX_LENGTH`: The maximum length of the chat history to store in Redis. This is used to limit the amount of memory used by the bot.
|
||||||
- `CTX`: The context length for the Ollama API. This determines how much of the chat history the bot will consider when generating a response.
|
- `CTX`: The context length for the Ollama API. This determines how much of the chat history the bot will consider when generating a response.
|
||||||
|
|||||||
@ -1,9 +1,10 @@
|
|||||||
DISCORD_TOKEN=<token>
|
DISCORD_TOKEN=<token>
|
||||||
ADMIN_ID=209692688415457282
|
ADMIN_ID=209692688415457282
|
||||||
|
CHAT_CHANNEL_ID=
|
||||||
OLLAMA_HOST=ollama
|
OLLAMA_HOST=ollama
|
||||||
OLLAMA_PORT=11434
|
OLLAMA_PORT=11434
|
||||||
OLLAMA_MODEL=llama3
|
OLLAMA_MODEL=llama3
|
||||||
REDIS_HOST=redis
|
REDIS_HOST=redis
|
||||||
BOT_NAME=assistant
|
BOT_NAME=assistant
|
||||||
CHAT_MAX_LENGTH=500
|
CHAT_MAX_LENGTH=500
|
||||||
CTX=2048
|
CTX=2048
|
||||||
10
bot.py
10
bot.py
@ -46,12 +46,13 @@ class DiscordResponse:
|
|||||||
|
|
||||||
|
|
||||||
class Bot:
|
class Bot:
|
||||||
def __init__(self, ollama, discord, redis, model, admin_id, bot_name, chat_max_length=500, ctx=4096):
|
def __init__(self, ollama, discord, redis, model, admin_id, chat_channel_id, bot_name, chat_max_length=500, ctx=4096):
|
||||||
self.ollama = ollama
|
self.ollama = ollama
|
||||||
self.discord = discord
|
self.discord = discord
|
||||||
self.redis = redis
|
self.redis = redis
|
||||||
self.model = model
|
self.model = model
|
||||||
self.admin_id = admin_id
|
self.admin_id = admin_id
|
||||||
|
self.chat_channel_id = chat_channel_id
|
||||||
self.bot_name = bot_name
|
self.bot_name = bot_name
|
||||||
self.chat_max_length = chat_max_length
|
self.chat_max_length = chat_max_length
|
||||||
self.ctx = ctx
|
self.ctx = ctx
|
||||||
@ -106,6 +107,11 @@ class Bot:
|
|||||||
|
|
||||||
string_channel_id = str(message.channel.id)
|
string_channel_id = str(message.channel.id)
|
||||||
|
|
||||||
|
# If CHAT_CHANNEL_ID is set, only respond in that channel.
|
||||||
|
if self.chat_channel_id:
|
||||||
|
if string_channel_id != self.chat_channel_id:
|
||||||
|
return
|
||||||
|
|
||||||
if self.discord.user == message.author:
|
if self.discord.user == message.author:
|
||||||
# don't respond to ourselves
|
# don't respond to ourselves
|
||||||
return
|
return
|
||||||
@ -242,6 +248,7 @@ def main():
|
|||||||
parser.add_argument('--redis-port', default=os.getenv('REDIS_PORT', 6379), type=int)
|
parser.add_argument('--redis-port', default=os.getenv('REDIS_PORT', 6379), type=int)
|
||||||
|
|
||||||
parser.add_argument('--admin-id', default=os.getenv('ADMIN_ID', ''), type=str)
|
parser.add_argument('--admin-id', default=os.getenv('ADMIN_ID', ''), type=str)
|
||||||
|
parser.add_argument('--chat-channel-id', default=os.getenv('CHAT_CHANNEL_ID', ''), type=str)
|
||||||
|
|
||||||
parser.add_argument('--bot-name', default=os.getenv('BOT_NAME', 'assistant'), type=str)
|
parser.add_argument('--bot-name', default=os.getenv('BOT_NAME', 'assistant'), type=str)
|
||||||
parser.add_argument('--chat-max-length', default=os.getenv('CHAT_MAX_LENGTH', 500), type=int)
|
parser.add_argument('--chat-max-length', default=os.getenv('CHAT_MAX_LENGTH', 500), type=int)
|
||||||
@ -260,6 +267,7 @@ def main():
|
|||||||
redis.Redis(host=args.redis_host, port=args.redis_port, db=0, decode_responses=True),
|
redis.Redis(host=args.redis_host, port=args.redis_port, db=0, decode_responses=True),
|
||||||
model=args.ollama_model,
|
model=args.ollama_model,
|
||||||
admin_id = args.admin_id,
|
admin_id = args.admin_id,
|
||||||
|
chat_channel_id = args.chat_channel_id,
|
||||||
bot_name = args.bot_name,
|
bot_name = args.bot_name,
|
||||||
chat_max_length=args.chat_max_length,
|
chat_max_length=args.chat_max_length,
|
||||||
ctx=args.ctx,
|
ctx=args.ctx,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user