Skip to content

Commit

Permalink
Update to .NET 8 and rewrite Developer Excuse to local file instead o…
Browse files Browse the repository at this point in the history
…f API
  • Loading branch information
omgitsjan committed Jan 7, 2024
1 parent 68d35a3 commit 73e1caf
Show file tree
Hide file tree
Showing 16 changed files with 455 additions and 281 deletions.
258 changes: 258 additions & 0 deletions DiscordBot/Data/excuses.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,258 @@
{
// TODO: Because there are so many, I have just translated them for now.
// There might be some weird ones due to this.
"de": [
"Eigentlich ist das eine Funktion.",
"Haben Sie auf Ihrem System nach einem Virus gesucht?",
"Auch wenn es nicht funktioniert, wie fühlt es sich an?",
"Von meiner Seite aus sieht alles gut aus.",
"Wie ist das möglich?",
"Ich habe das absichtlich kaputt gemacht, um einige Tests durchzuführen.",
"Ich kann das im Moment nicht zur Priorität machen.",
"Ich kann nicht alles testen.",
"Ich konnte nirgendwo online Beispiele finden, wie das gemacht werden kann.",
"Ich konnte keine Bibliothek finden, die das überhaupt tun kann.",
"Ich habe das letzte Mal eine schnelle Lösung gefunden, aber sie ging kaputt, als wir neu gestartet haben.",
"Ich hatte nicht erwartet, dass ich Fehler machen würde.",
"Ich habe diesen Teil des Programms nicht erstellt.",
"Ich habe dafür kein Ticket erhalten.",
"Ich habe vergessen, den Code zu übermitteln, der das repariert.",
"So etwas habe ich noch nie in meinem Leben gesehen.",
"Ich habe jetzt zu viele andere Dinge mit hoher Priorität zu tun.",
"Ich konnte das nicht reproduzieren.",
"Ich hatte noch keine Gelegenheit, diesen Code auszuführen.",
"Ich habe damit noch keine Erfahrung gehabt.",
"Ich habe diesen Code seit Wochen nicht berührt.",
"Ich habe gehört, dass es heute einen Sonnensturm gab.",
"Ich muss unseren Produktionsserver einem Stress-Test unterzogen haben.",
"Ich muss wohl nicht verstanden haben, was Sie gefragt haben.",
"Ich dachte, ich hätte das fertiggestellt.",
"Ich dachte, er wüsste, in welchem Zusammenhang ich spreche.",
"Ich dachte, Sie hätten das abgesegnet.",
"Ich habe Ihnen gestern gesagt, dass es bis Ende heute fertig sein würde.",
"Normalerweise erhalte ich eine Benachrichtigung, wenn das passiert.",
"Ich war gerade dabei, das zu reparieren.",
"Mir wurde gesagt, ich solle damit aufhören, als etwas Wichtiges aufkam.",
"Im Interesse der Effizienz überprüfe ich meine E-Mails dafür nur freitags.",
"Es kann nicht kaputt sein, es besteht alle Unit-Tests.",
"Das muss ein Hardwareproblem sein.",
"Das muss wegen eines Schaltjahres sein.",
"Das wird wahrscheinlich nicht wieder passieren.",
"In meinem Kopf hat es funktioniert.",
"Bei mir funktioniert es.",
"Es funktioniert, aber es wurde nicht getestet.",
"Es hätte doppelt so lange gedauert, es ordnungsgemäß zu bauen.",
"Es würde zu lange dauern, den Code von Grund auf neu zu schreiben.",
"Das ist ein Browser-Kompatibilitätsproblem.",
"Das ist ein Problem der Zeichenkodierung.",
"Das ist ein Kompatibilitätsproblem.",
"Das ist ein bekannter Bug der Programmiersprache.",
"Das ist ein Problem des entfernten Anbieters.",
"Das war schon immer so.",
"Das ist ein unerwartetes emergentes Verhalten mehrerer Last-Minute-Abstraktionen.",
"Das ist nur ein unglücklicher Zufall.",
"Das hat es vorher noch nie getan.",
"So ein unerwartetes Verhalten hat es noch nie gezeigt.",
"Das ist kein Codeproblem - unsere Benutzer brauchen mehr Schulung.",
"Ich muss das zu einem späteren Zeitpunkt beheben.",
"Ich kenne mich damit nicht aus, also habe ich es nicht repariert, falls ich es verschlimmern würde.",
"Ich bekomme keine Fehlercodes.",
"Ich bin mir nicht sicher, da ich noch nie gesehen habe, wie das funktioniert.",
"Ich arbeite gerade daran, während wir sprechen.",
"Ich bin überrascht, dass es überhaupt funktioniert hat.",
"Ich bin überrascht, dass es so gut funktioniert.",
"Das Management bestand darauf, dass wir unsere Zeit nicht mit dem Schreiben von Unit-Tests verschwenden müssten.",
"Vielleicht hat jemand vergessen, unserer Hosting-Firma zu bezahlen.",
"Meine Zeit wurde so aufgeteilt, dass ich keines der Projekte richtig machen konnte",
"Mir hat niemand etwas gesagt, also musste ich annehmen, auf welche Weise ich das machen sollte.",
"Niemand hat mich gefragt, wie lange es wirklich dauern würde.",
"Niemand hat sich je darüber beschwert.",
"Oh, das war nur eine vorübergehende Lösung.",
"Oh, das sollte nur ein Platzhalter sein.",
"Oh, Sie sagten, Sie wollten NICHT, dass das passiert?",
"Unsere Codequalität ist nicht schlechter als die von irgendjemandem in der Branche.",
"Unsere Hardware ist zu langsam, um mit der Nachfrage Schritt zu halten.",
"Unsere Internetverbindung funktioniert wahrscheinlich nicht.",
"Unsere redundanten Systeme müssen auch ausgefallen sein.",
"Bitte ignorieren Sie das, es ist zum Debuggen",
"Jemand muss meinen Code geändert haben.",
"DAS kann nicht die Quelle von DEM sein.",
"Dieses Verhalten ist in der ursprünglichen Spezifikation.",
"Dieser Code schien so einfach, dass ich nicht dachte, er müsste getestet werden.",
"Dieser Fehler bedeutet, dass es erfolgreich war.",
"Diese Funktion war für Phase zwei vorgesehen.",
"Diese Funktion wäre außerhalb des Umfangs.",
"Diese wichtige E-Mail muss als Spam markiert worden sein.",
"Das fällt nicht unter meine Stellenbeschreibung.",
"Dieser Prozess erfordert menschliche Aufsicht, die niemand bereitstellte.",
"Das war buchstäblich ein Fehler von einer Million.",
"Das war nicht in der ursprünglichen Spezifikation.",
"Das hat perfekt funktioniert, als ich es entwickelt habe.",
"Das wäre wirtschaftlich nicht machbar.",
"Das ist schon behoben, es hat nur noch keine Wirkung gezeigt.",
"Das ist interessant, wie haben Sie es geschafft, dass es das tut?",
"Das ist kein Bug, das ist ein Konfigurationsproblem.",
"Das ist die Schuld des Grafikdesigners.",
"Die Buchhaltungsabteilung muss dieses Abonnement gekündigt haben.",
"Der Kunde muss gehackt worden sein.",
"Der Kunde wollte es in letzter Minute geändert haben.",
"Der Code wird gerade kompiliert.",
"Das DNS hat sich noch nicht verbreitet.",
"Der Download muss korrupt gewesen sein.",
"Das bestehende Design macht es schwierig, das Richtige zu tun.",
"Die Marketingabteilung hat uns dazu gebracht, das dort hinzuzufügen.",
"Die verantwortliche Person arbeitet nicht mehr hier.",
"Das Problem scheint bei unserer Legacy-Software zu liegen.",
"Das Programm hat diese Informationen nie gesammelt.",
"Der Projektmanager sagte, niemand würde diese Funktion wollen",
"Der Projektmanager hat mir gesagt, ich soll es so machen.",
"Die Anfrage muss einige Pakete verloren haben.",
"Die Spezifikationen waren mehrdeutig.",
"Die Dokumentation der dritten Partei existiert nicht.",
"Der Benutzer weiß wahrscheinlich nicht, wie man es benutzt.",
"In Ihren Daten muss etwas Seltsames sein.",
"Zu der Zeit gab es zu wenig Daten, um sich mit der zusätzlichen Funktionalität zu befassen.",
"Derzeit gibt es ein Problem mit unserer Hosting-Firma.",
"Dieser Code sollte noch nicht in die Produktion gehen.",
"Das ist ein bereits bekannter Fehler, an dem ich noch nicht arbeiten sollte.",
"Wir hatten nicht genug Zeit, die letzten Änderungen gemeinsam zu überprüfen.",
"Gut gemacht, Sie haben mein Osterei gefunden!",
"Nun, zumindest zeigt es einen sehr hübschen Fehler.",
"Nun, zumindest wissen wir, dass wir das nicht noch einmal versuchen sollten.",
"Nun, das ist das erste Mal.",
"Was habe ich Ihnen über die Verwendung von Teilen des Systems gesagt, die Sie nicht verstehen?",
"Was haben Sie falsch eingegeben, um es zum Absturz zu bringen?",
"Wo waren Sie, als das Programm explodierte?",
"Warum wollen Sie es auf diese Weise machen?",
"Sie müssen etwas falsch gemacht haben.",
"Sie machen es falsch.",
"Sie müssen die falsche Version haben."
],
"en": [
"Actually, that’s a feature.",
"Did you check for a virus on your system?",
"Even though it doesn’t work, how does it feel?",
"Everything looks fine on my end.",
"How is that possible?",
"I broke that deliberately to do some testing.",
"I can’t make that a priority right now.",
"I can’t test everything.",
"I couldn’t find any examples of how that can be done anywhere online.",
"I couldn’t find any library that can even do that.",
"I did a quick fix last time but it broke when we rebooted.",
"I didn’t anticipate that I would make any errors.",
"I didn’t create that part of the program.",
"I didn’t receive a ticket for it.",
"I forgot to commit the code that fixes that.",
"I have never seen that before in my life.",
"I have too many other high priority things to do right now.",
"I haven’t been able to reproduce that.",
"I haven’t had a chance to run that code yet.",
"I haven’t had any experience with that before.",
"I haven’t touched that code in weeks.",
"I heard there was a solar flare today.",
"I must have been stress-testing our production server.",
"I must not have understood what you were asking for.",
"I thought I finished that.",
"I thought he knew the context of what I was talking about.",
"I thought you signed off on that.",
"I told you yesterday it would be done by the end of today.",
"I usually get a notification when that happens.",
"I was just fixing that.",
"I was told to stop working on that when something important came up.",
"In the interest of efficiency I only check my email for that on a Friday.",
"It can’t be broken, it passes all unit tests.",
"It must be a hardware problem.",
"It must be because of a leap year.",
"It probably won’t happen again.",
"It was working in my head.",
"It works for me.",
"It works, but it’s not been tested.",
"It would have taken twice as long to build it properly.",
"It would take too long to rewrite the code from scratch.",
"It’s a browser compatibility issue.",
"It’s a character encoding issue.",
"It’s a compatibility issue.",
"It’s a known bug with the programming language.",
"It’s a remote vendor issue.",
"It’s always been like that.",
"It’s an unexpected emergent behaviour of several last minute abstractions.",
"It’s just some unlucky coincidence.",
"It’s never done that before.",
"It’s never shown unexpected behavior like this before.",
"It’s not a code problem — our users need more training.",
"I’ll have to fix that at a later date.",
"I’m not familiar with it so I didn’t fix it in case I made it worse.",
"I’m not getting any error codes.",
"I’m not sure as I’ve never had a look at how that works before.",
"I’m still working on that as we speak.",
"I’m surprised it was working at all.",
"I’m surprised it works as well as it does.",
"Management insisted we wouldn’t need to waste our time writing unit tests.",
"Maybe somebody forgot to pay our hosting company.",
"My time was split in a way that meant I couldn’t do either project properly",
"No one told me so I was forced to assume which way to do that.",
"Nobody asked me how long it would actually take.",
"Nobody has ever complained about it.",
"Oh, that was just a temporary fix.",
"Oh, that was only supposed to be a placeholder.",
"Oh, you said you DIDN’T want that to happen?",
"Our code quality is no worse than anyone else in the industry.",
"Our hardware is too slow to cope with demand.",
"Our internet connection must not be working.",
"Our redundant systems must have failed as well.",
"Please ignore that, it’s for debugging",
"Somebody must have changed my code.",
"THIS can’t be the source of THAT.",
"That behaviour is in the original specification.",
"That code seemed so simple I didn’t think it needed testing.",
"That error means it was successful.",
"That feature was slated for phase two.",
"That feature would be outside the scope.",
"That important email must have been marked as spam.",
"That isn’t covered by my job description.",
"That process requires human oversight that nobody was providing.",
"That was literally a one in a million error.",
"That wasn’t in the original specification.",
"That worked perfectly when I developed it.",
"That wouldn’t be economically feasible.",
"That’s already fixed, it just hasn’t taken effect yet.",
"That’s interesting, how did you manage to make it do that?",
"That’s not a bug it’s a configuration issue.",
"That’s the fault of the graphic designer.",
"The accounting department must have cancelled that subscription.",
"The client must have been hacked.",
"The client wanted it changed at the last minute.",
"The code is compiling.",
"The DNS hasn’t propagated yet.",
"The download must have been corrupted.",
"The existing design makes it difficult to do the right thing.",
"The marketing department made us put that there.",
"The person responsible doesn’t work here anymore.",
"The problem seems to be with our legacy software.",
"The program has never collected that information.",
"The project manager said no one would want that feature",
"The project manager told me to do it that way.",
"The request must have dropped some packets.",
"The specifications were ambiguous.",
"The third party documentation doesn’t exist.",
"The user must not know how to use it.",
"There must be something strange in your data.",
"There was too little data to bother with the extra functionality at the time.",
"There’s currently a problem with our hosting company.",
"This code was not supposed to go in to production yet.",
"This is a previously known bug you told me not to work on yet.",
"We didn’t have enough time to peer review the final changes.",
"Well done, you found my easter egg!",
"Well, at least it displays a very pretty error.",
"Well, at least we know not to try that again.",
"Well, that’s a first.",
"What did I tell you about using parts of the system you don’t understand?",
"What did you type in wrong to get it to crash?",
"Where were you when the program blew up?",
"Why do you want to do it that way?",
"You must have done something wrong.",
"You’re doing it wrong.",
"You must have the wrong version."
]
}
20 changes: 15 additions & 5 deletions DiscordBot/DiscordBot.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>DiscordBot</RootNamespace>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
Expand All @@ -20,12 +20,12 @@

<ItemGroup>
<PackageReference Include="DSharpPlus" Version="4.4.6" />
<PackageReference Include="DSharpPlus.Interactivity" Version="4.4.2" />
<PackageReference Include="DSharpPlus.Interactivity" Version="4.4.6" />
<PackageReference Include="DSharpPlus.SlashCommands" Version="4.4.6" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.8" />
<PackageReference Include="RestSharp" Version="110.2.0" />
</ItemGroup>
Expand All @@ -43,4 +43,14 @@
<EditorConfigFiles Remove=".editorconfig" />
</ItemGroup>

<ItemGroup>
<None Remove="Data\excuses.json" />
</ItemGroup>

<ItemGroup>
<Content Include="Data\excuses.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>

</Project>
6 changes: 3 additions & 3 deletions DiscordBot/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ public async Task MainAsync()

// Set up the timer to change the status every 30 seconds
int statusIndex = 0; // This variable helps us cycle through the different statuses
Timer timer = new Timer(15000); // Set the timer to execute every 30 seconds
Timer timer = new(15000); // Set the timer to execute every 30 seconds

timer.Elapsed += async (_, _) =>
{
Expand Down Expand Up @@ -174,7 +174,7 @@ await Client.UpdateStatusAsync(new DiscordActivity(
break;
case 6:
await Client.UpdateStatusAsync(new DiscordActivity(
"omgitsjan/DiscordBotAI | JPProfessionals.de",
"omgitsjan/DiscordBotAI | janpetry.de",
ActivityType.Watching));
break;
}
Expand All @@ -200,7 +200,7 @@ internal static void Log(string? msg,
{
if (Logger != null)
{
Logger.Log(logLevel, msg);
Logger.Log(logLevel, "{Message}", msg);
}
else
{
Expand Down
20 changes: 5 additions & 15 deletions DiscordBot/Services/CryptoService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,20 @@

namespace DiscordBot.Services
{
public class CryptoService : ICryptoService
public class CryptoService(IHttpService httpService, IConfiguration configuration) : ICryptoService
{
private readonly IConfiguration _configuration;

private readonly IHttpService _httpService;

/// <summary>
/// Url to the Bitcoin Price Api
/// </summary>
private string? _byBitApiUrlBtc;

public CryptoService(IHttpService httpService, IConfiguration configuration)
{
_httpService = httpService;
_configuration = configuration;
}

/// <summary>
/// Gets the current Bitcion price from bybit public api
/// Gets the current Bitcoin price from bybit public api
/// </summary>
/// <returns>The current price from bitcoin as BTCUSD string</returns>
/// <returns>The current price from bitcoin as BTC-USD string</returns>
public async Task<string> GetCurrentBitcoinPriceAsync()
{
_byBitApiUrlBtc = _configuration["ByBit:ApiUrlBtc"] ?? string.Empty;
_byBitApiUrlBtc = configuration["ByBit:ApiUrlBtc"] ?? string.Empty;

if (string.IsNullOrEmpty(_byBitApiUrlBtc))
{
Expand All @@ -39,7 +29,7 @@ public async Task<string> GetCurrentBitcoinPriceAsync()
return errorMessage;
}

HttpResponse response = await _httpService.GetResponseFromUrl(_byBitApiUrlBtc);
HttpResponse response = await httpService.GetResponseFromUrl(_byBitApiUrlBtc);

if (!response.IsSuccessStatusCode)
{
Expand Down
Loading

0 comments on commit 73e1caf

Please sign in to comment.