Added LMStudio client, upgraded to .net 9.0

This commit is contained in:
Samuele Lorefice
2024-12-25 19:37:14 +01:00
parent 0ba298b955
commit 4b308b762a
7 changed files with 51 additions and 45 deletions

View File

@@ -1 +1,4 @@
TELEGRAM_BOT_TOKEN=yourTokenHere
TELEGRAM_BOT_TOKEN=yourTokenHere
LMSTUDIO_BASE_URL=
LMSTUDIO_MODEL=
LMSTUDIO_API_KEY=

View File

@@ -1,8 +1,8 @@
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
FROM mcr.microsoft.com/dotnet/dotnet:9.0 AS base
USER $APP_UID
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["TelegramBot/TelegramBot.csproj", "TelegramBot/"]

View File

@@ -1,9 +1,19 @@
using Telegram.Bot;
using System.Diagnostics;
using Telegram.Bot;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
using LMStudio;
string baseUrl = Environment.GetEnvironmentVariable("LMSTUDIO_BASE_URL") ?? string.Empty;
string model = Environment.GetEnvironmentVariable("LMSTUDIO_MODEL") ?? string.Empty;
string apiKey = Environment.GetEnvironmentVariable("LMSTUDIO_API_KEY") ?? string.Empty;
var lmsclient = new ModelConnection(baseUrl, model, apiKey);
Dictionary<long, LMStudio.Chat> lmsChats = new();
string token = Environment.GetEnvironmentVariable("TELEGRAM_BOT_TOKEN") ?? string.Empty;
using var cts = new CancellationTokenSource();
var bot = new TelegramBotClient(Environment.GetEnvironmentVariable("TELEGRAM_BOT_TOKEN"), cancellationToken:cts.Token);
var bot = new TelegramBotClient(token, cancellationToken:cts.Token);
var me = bot.GetMe();
bot.OnMessage += OnMessage;
Console.ReadLine();
@@ -13,19 +23,20 @@ async Task OnMessage(Message msg, UpdateType type)
{
//Discard any message that is not a text message
if (msg.Type != MessageType.Text) return;
//Check if the message contains the bot's username
if (msg.Text!.Contains(me.Result.Username!, StringComparison.OrdinalIgnoreCase))
await bot.SendMessage(msg.Chat, "You mentioned me!");
//Check if the message is a reply to a message sent by the bot
else if(msg.ReplyToMessage != null && msg.ReplyToMessage.From!.Id == me.Result.Id){
await bot.SendMessage(msg.Chat, "You replied to a message!");
//Check if the message contains the bot's username or a reply to a message sent by the bot
if (msg.Text!.Contains(me.Result.Username!, StringComparison.OrdinalIgnoreCase) ||
msg.ReplyToMessage != null && msg.ReplyToMessage.From!.Id == me.Result.Id) {
//Check if the chat is already in the dictionary
if (!lmsChats.ContainsKey(msg.Chat.Id))
AddChatToDictionary(msg.Chat.Id);
lmsChats[msg.Chat.Id].CreateChatCompletion(msg.Text);
}
//We can safely return otherwise
}
HttpClient AiClient = new HttpClient();
string getNemesisMsg() {
//AiClient.GetAsync()
return "";
void AddChatToDictionary(long id) {
//Create a new chat object
var chat = new LMStudio.Chat(lmsclient);
//add the entry to the dictionary
lmsChats.Add(id, chat);
}

View File

@@ -2,10 +2,11 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<LangVersion>latestmajor</LangVersion>
</PropertyGroup>
<ItemGroup>
@@ -15,6 +16,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="LMStudio" Version="1.2.0" />
<PackageReference Include="Telegram.Bot" Version="22.2.0" />
</ItemGroup>