Added LMStudio client, upgraded to .net 9.0
This commit is contained in:
@@ -1 +1,4 @@
|
||||
TELEGRAM_BOT_TOKEN=yourTokenHere
|
||||
TELEGRAM_BOT_TOKEN=yourTokenHere
|
||||
LMSTUDIO_BASE_URL=
|
||||
LMSTUDIO_MODEL=
|
||||
LMSTUDIO_API_KEY=
|
||||
|
||||
@@ -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/"]
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user