HackmudChatClient 1.0.0
dotnet add package HackmudChatClient --version 1.0.0
NuGet\Install-Package HackmudChatClient -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="HackmudChatClient" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add HackmudChatClient --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: HackmudChatClient, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install HackmudChatClient as a Cake Addin #addin nuget:?package=HackmudChatClient&version=1.0.0 // Install HackmudChatClient as a Cake Tool #tool nuget:?package=HackmudChatClient&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Hackmud Chat Client
A chat client that uses the hackmud api to receive chats and send chats in game
usage
// this is to store messages
static readonly List<UserChatsModel> processedChats = [];
static async Task Main( string[] args ) {
// Tokens get stored in the environment.
var token = Environment.GetEnvironmentVariable( "HackmudChatClientApiToken", EnvironmentVariableTarget.User );
var client = new HackmudChat();
// set chat poll frequency.
var client = new HackmudChat(700);
// set chat poll frequency and account data poll frequency
var client = new HackmudChat(700,5000);
// ^ + set default user.
var client = new HackmudChat(700,5000,"<user>");
// subscribe to events.
client.OnTokenError += new HackmudChat.TokenError( Client_TokenErrorReceived );
client.OnChatsReceived += new HackmudChat.ChatsReceived( Client_OnChatsReceived );
client.OnChatsError += new HackmudChat.ChatsError( Client_ChatsErrorReceived );
client.OnAccountDataReceived += new HackmudChat.AccountDataReceived( Client_AccountDataReceived );
client.OnAccountDataError += new HackmudChat.AccountDataError( Client_AccountDataErrorReceived );
// you can check if anything comes back. token is stored base64 as it is an object.
if ( string.IsNullOrEmpty(token) ) {
Console.WriteLine("type pass:");
var pass = Console.ReadLine();
while (pass == null || string.IsNullOrEmpty(pass.Trim())) {
Console.WriteLine( "type pass:" );
pass = Console.ReadLine();
}
await client.CreateToken( pass );
}
// inits the timers.
client.Init();
// inits the timers and sets default user
client.Init("<username>");
// other things you can do
await client.SendChatMessage( "0000", "hello" );
await client.SendChatMessage( "<user>", "0000", "hello" );
//
await client.SendTellMessage( "<toUser>", "hello" );
await client.SendTellMessage( "<fromUser>", "<toUser>", "hello" );
// keep application alive.
Thread.Sleep( -1 );
}
private static void Client_TokenErrorReceived( object sender, string message ) {
Console.WriteLine( message );
}
private static void Client_OnChatsReceived( object sender, List<UserChatsModel> e ) {
foreach (var chat in e) {
if ( processedChats.FirstOrDefault( c => c.Id.Equals( chat.Id ) ) == null ) {
processedChats.Add( chat );
Console.WriteLine( $"id: {chat.Id} -- from: {chat.FromUser} -- join?{chat.IsJoin} -- leave?{chat.IsLeave} -- message:{chat.Message}" );
}
}
}
private static void Client_ChatsErrorReceived( object sender, string message ) {
Console.WriteLine( message );
}
private static void Client_AccountDataReceived( object sender, List<AccountDataModel> data ) {
throw new NotImplementedException();
}
private static void Client_AccountDataErrorReceived( object sender, string message ) {
Console.WriteLine( message );
}
Returned objects
The hackmud api has some interesting return objects.<br/> this api client will give things back in a more Flat way and easy to use with linq
public class AccountDataModel
{
public required string User { get; set; }
public List<ChannelDataModel>? Channels { get; set; }
}
public class ApiToken
{
public required string Token { get; set; }
public DateTime TokenCreated { get; set; } = DateTime.Now;
}
public class ChannelDataModel
{
public required string Channel { get; set; }
public List<string>? Users { get; set; }
}
public class HackmudTimeStamp
{
public long UnixTimeStamp { get; set; } = DateTimeOffset.Now.ToUnixTimeMilliseconds();
public DateTime DateTime => DateTimeOffset.FromUnixTimeMilliseconds(UnixTimeStamp).DateTime;
public double HackmudTime => Math.Floor( UnixTimeStamp / 1000d );
}
public class UserChatsModel
{
public required string Id { get; set; }
public required string ChannelUser { get; set; }
public DateTime Time { get; set; }
public required string FromUser { get; set; }
public required string Message { get; set; }
public bool IsJoin { get; set; }
public bool IsLeave { get; set; }
public bool IsTell { get; set; }
}
public class Response
{
[JsonPropertyName("ok")]
public bool Ok { get; set; }
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 105 | 7/7/2024 |