add index.js
This commit is contained in:
parent
7f69994afc
commit
e144db938b
92
index.js
Normal file
92
index.js
Normal file
@ -0,0 +1,92 @@
|
||||
import { finalizeEvent, verifyEvent, getPublicKey, nip19 } from "nostr-tools";
|
||||
import { useWebSocketImplementation, Relay } from "nostr-tools/relay";
|
||||
import WebSocket from "ws";
|
||||
useWebSocketImplementation(WebSocket);
|
||||
|
||||
const TWO_DAYS = 48 * 60 * 60 * 1000;
|
||||
const RELAY = "TODO";
|
||||
const BOT = JSON.stringify({
|
||||
name: "BOT",
|
||||
about: "a little exercise",
|
||||
});
|
||||
let intervalId;
|
||||
|
||||
try {
|
||||
const args = [...process.argv];
|
||||
args.shift();
|
||||
args.shift();
|
||||
|
||||
if (!args.includes("-nsec")) {
|
||||
console.error("BOT NEEDS NSEC.\n-nsec <nsec>");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const index = args.findIndex((arg) => arg === "-nsec");
|
||||
const nsec = args[index + 1];
|
||||
|
||||
if (typeof nsec === "undefined" || nsec === "" || !nsec.startsWith("nsec")) {
|
||||
console.error("BOT NSEC MISSING");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const sk = nip19.decode(nsec).data;
|
||||
if (!sk) {
|
||||
console.error("BOT NSEC BAD.");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const pk = getPublicKey(sk);
|
||||
const profileEvent = finalizeEvent(
|
||||
{
|
||||
kind: 0,
|
||||
content: BOT,
|
||||
created_at: Math.floor(Date.now() / 1000),
|
||||
tags: [],
|
||||
},
|
||||
sk
|
||||
);
|
||||
const isGood = verifyEvent(profileEvent);
|
||||
if (isGood) {
|
||||
(async () => {
|
||||
const relay = await Relay.connect(RELAY);
|
||||
await relay.publish(profileEvent);
|
||||
console.log("IT IS ALIVE!!");
|
||||
relay.close();
|
||||
})();
|
||||
}
|
||||
|
||||
const run = () => {
|
||||
const today = new Date();
|
||||
const dayOfWeek = today.getUTCDay();
|
||||
const message = `${dayOfWeek % 6 === 0 ? "gfy" : "GM"} fiatjaf`;
|
||||
|
||||
const event = finalizeEvent(
|
||||
{
|
||||
kind: 1,
|
||||
content: message,
|
||||
created_at: Math.floor(Date.now() / 1000),
|
||||
tags: [],
|
||||
},
|
||||
sk
|
||||
);
|
||||
|
||||
const isGood = verifyEvent(event);
|
||||
if (isGood) {
|
||||
(async () => {
|
||||
console.log("BOT IS CONNECTING..");
|
||||
const relay = await Relay.connect(RELAY);
|
||||
console.log("BOT CONNECTED");
|
||||
await relay.publish(event);
|
||||
console.log(`[${today.toISOString()}] ${message}`, event);
|
||||
relay.close();
|
||||
})();
|
||||
}
|
||||
};
|
||||
|
||||
console.log("BOT IS BOTTING as", nip19.npubEncode(pk));
|
||||
intervalId = setInterval(run, TWO_DAYS);
|
||||
} catch (error) {
|
||||
console.error(`[${new Date().toISOString()}]`, "RIP BOT", error);
|
||||
clearInterval(intervalId);
|
||||
process.exit(1);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user