Misskey.rb

A Ruby module for interacting with the Misskey API. Releases hosted on Rubygems. This is not affiliated with Syuilo in any way!!

Installation :neofox_science:

Either add it to your Gemfile:

gem "misskey"

or install it directly with Gem:

gem install misskey

Contributing :neofox_laptop:

Because it would be really difficult for me to implement every Misskey API feature, I would really appreciate contributions!

When contributing please make sure to follow these guidelines. These may change as time goes on:

1) No LLM-generated commits please! Vibecoded software tends to get really messy and introduce more issues than it solves. Also everything around LLMs are highly unethical and I don't want to support that. Thanks!

2) Please do not create multiple functions that do the same thing.

3) Follow common sense.

Thank you! :neofox_heart:

Using :neofox_notice:

I didn't have the energy to make a real wiki for this and I have no idea how to use the Rubygems documentation thingy so I just stuck it in one big readme. I am deeply sorry about this :neofox_googly_shocked:

Like I said in the contributing guide, this doesn't implement every Misskey API feature and if you want to see a feature added it would mean a lot to me if you could contribute! Thanks :neofox_heart:

Authentication (REQUIRED!!!)

Misskey.auth.instanceURI

This sets the instance URI that your client will connect to. This and Misskey.auth.token are required when using Misskey.rb.

This can be used like a variable. You can change it or access it at any time. See some examples below:

Changing the value:

require "misskey"

Misskey.auth.instanceURI = "sharkey.skydevs.me"

Calling the value:

require "misskey"

Misskey.auth.instanceURI = "sharkey.skydevs.me"

# Getting the value
puts Misskey.auth.instanceURI

Pretty simple :neofox_floof_happy:

Misskey.auth.token

This sets the API key/token that your client will connect to. This and Misskey.auth.instanceURI are required when using Misskey.rb.

This can be used like a variable. You can change it or access it at any time. See some examples below:

Changing the value:

require "misskey"

Misskey.auth.token = "blahblahtokenweeewooooooo"

Calling the value:

require "misskey"

Misskey.auth.token = "wafwaftokenaaaaaa"

# Getting the value
puts Misskey.auth.token

You can also use this in pair with the dotenv module:

require "misskey"
require "dotenv"

Dotenv.load "./.env"
Misskey.auth.token = ENV["APIKey"]

Also pretty simple :neofox_floof_happy:

Notes

Misskey.notes.create

Creates a note.

Order of arguments are as follows: noteContent also known as the body text (REQUIRED), visibility, localonly, cw also known as a content warning.

Visibility options include: public, home, followers, and specified. specified is also known as a direct note or private message.

Some examples:

require "misskey"

Misskey.auth.token = "tokenwaaaaaaa"
Misskey.auth.instanceURI = "sharkey.skydevs.me"

Misskey.notes.create "Hello world!! :neofox_floof:"

It will automatically convert things like ":neofox_floof:" to their respective emojis as seen above.

require "misskey"

Misskey.auth.token = "tokenwaaaaaaa"
Misskey.auth.instanceURI = "sharkey.skydevs.me"

Misskey.notes.create "Hello there, this is a home note.", "home"

The example above shows a client creating a note with the visibility "home"

require "misskey"

Misskey.auth.token = "tokenwaaaaaaa"
Misskey.auth.instanceURI = "sharkey.skydevs.me"

Misskey.notes.create "Hi this is local!", "public", true

The example above shows a client creating a public local (aka defederated) note.

require "misskey"

Misskey.auth.token = "tokenwaaaaaaa"
Misskey.auth.instanceURI = "sharkey.skydevs.me"

Misskey.notes.create "Hi this is local and features a content warning!", "public", true, "Holy moly it's a post by me wow beware"

As the note body suggests, this is a local note that has a content warning.

You may refer to the Misskey API docs for more info.

Misskey.notes.create.reply

Very similar to Misskey.notes.create except it features a new required argument called replyId.

Arguments for this are as follows: replyId (REQUIRED), noteContent (REQUIRED), visibility, localOnly, cw

An example:

require "misskey"

Misskey.auth.token = "tokenwaaaaaaa"
Misskey.auth.instanceURI = "sharkey.skydevs.me"

Misskey.notes.create.reply "someReplyId", "Hello there, this is a reply."

You may refer to the Misskey API docs for more info.

Misskey.notes.timeline

Retrieves the home timeline of the currently logged-in user I believe? Not too sure because I only tested it on a dummy account that doesn't follow anyone.

There is one optional argument which is limit. As the name suggests, it sets a limit to how many notes should be retrieved. By default it's set to 10.

require "misskey"

Misskey.auth.token = "tokenwaaaaaaa"
Misskey.auth.instanceURI = "sharkey.skydevs.me"

puts Misskey.notes.timeline

You may refer to the Misskey API docs for more info.

Misskey.getOnlineUsersCount

Pretty self-explanatory, gets the number of users online. Using it is really simple, here's an example:

require "misskey"

Misskey.auth.token = "tokenwaaaaaaa"
Misskey.auth.instanceURI = "sharkey.skydevs.me"

puts "There are #{Misskey.getOnlineUsersCount} user(s) online right now!"

Slightly more complicated example:

require "misskey"

Misskey.auth.token = "tokenwaaaaaaa"
Misskey.auth.instanceURI = "sharkey.skydevs.me"

case Misskey.getOnlineUserscount.to_i
when 0
    puts "There are no users online :("
when 1
    puts "There is 1 user online."
when > 1
    puts "There are #{Misskey.getOnlineUserscount} users online"
end

You may refer to the Misskey API docs for more info.

Misskey.serverInfo

Retrieves the instance/server information. Example:

require "misskey"

Misskey.auth.token = "tokenwaaaaaaa"
Misskey.auth.instanceURI = "sharkey.skydevs.me"

puts Misskey.serverInfo

You may refer to the Misskey API docs for more info.

Misskey.i

Retrieves the information about the currently logged-in user. Example:

require "misskey"

Misskey.auth.token = "tokenwaaaaaaa"
Misskey.auth.instanceURI = "sharkey.skydevs.me"

puts Misskey.i

You may refer to the Misskey API docs for more info.