0.0.8 • Published 4 months ago
tubes_core v0.0.8
tubes core
correct, extensible & asynchronous IRCing for javascript
correctness coming soon
(work in progress, don't bother using yet)
lil example
// import Connection from `ws`. ws, as the name implies, only lets you connect
// over a websocket (so you can use it in browsers and the like).
// if you need to connect over TCP, use `tubes_core/tcp` instead.
import { Connection } from "tubes_core/ws";
// create the connection
const conn = new Connection({
url: "wss://testnet.ergo.chat/webirc",
nickname: "the_grungler",
realname: "i'm the grungler",
});
// start connecting
await conn.connect();
// let the network know you're a bot by setting mode +B on your nick
// (if you're writing a client, skip this)
await conn.ima_bot();
// join a channel
const channel = await conn.join_channel("#tubes");
// send a message. you can omit the `await` if you don't care whether the
// message was sent successfully
await channel.privmsg("hello world!");
// gracefully quit the network once all is said and done
await conn.disconnect();
for tcp:
import { Connection } from "tubes_core/tcp";
const conn = new Connection({
url: "ircs://testnet.ergo.chat",
nickname: "the_grungler",
realname: "i'm the grungler",
});
// same as above from there
listening out for messages:
channel.subscribe((msg) => {
// check if the message is a PRIVMSG (i.e. a normal message sent
// to the channel) and if its content is "!ping".
if (msg.is_privmsg() && msg.content() == "!ping") {
// respond to the message. this uses the ircv3 replies thing if they're
// available.
await msg.reply("pong!");
}
});
bouncers
tubes has an "adapter" system for connecting to irc bouncers.
soju
import { Adapter } from "tubes_core/soju";
const adp = new Adapter({
url: "wss://irc.example.org/socket",
});
await adp.activate();
const conn = adp.connections[0]
conn.send("PING hello");
proper documentation coming soon xoxo