separated commands from message event and added state control to them
This commit is contained in:
@@ -21,49 +21,7 @@ module.exports = {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function sendPositivity() {
|
|
||||||
// Function sends a random string of predetermined positivity, Donothon Top Donator Reward
|
|
||||||
let positive_Messages = [
|
|
||||||
"You are so very worthy of all the love and support that may come your way.",
|
|
||||||
"There are many things which draw us together. In this time and place, that lovely subject is you, Hel.",
|
|
||||||
"The happiness and joy you add to the world is worth more than most anything.",
|
|
||||||
"You deserve every warm laugh, bright smile, and all the genuine kindness given to you.",
|
|
||||||
"There are few things as precious as your time. Thank you for sharing with us.",
|
|
||||||
"Your feelings are valid and you are not less than for having them.",
|
|
||||||
"I've seen all the work you do and I'm so very proud of you.",
|
|
||||||
"You are dearly cherished and I want to thank you for being so wonderfully you.",
|
|
||||||
"You. Are. Worthy. Enough. And I will tell you as many times as it takes for you to believe it.",
|
|
||||||
"Every day you give your best and that is so admirable. Don't let anyone tell you otherwise.",
|
|
||||||
"Your light is like that of the full moon, brightening our lives even in our darkest moments.",
|
|
||||||
"It's okay to take a moment to catch your breath. Even machines require maintenance from time to time.",
|
|
||||||
"Watching you succeed and achieve your heart's desires gives me so much motivation and I am very grateful for it."
|
|
||||||
]
|
|
||||||
|
|
||||||
let rdm = Math.floor(Math.random() * positive_Messages.length)
|
|
||||||
return tClient.say(channel, positive_Messages[rdm])
|
|
||||||
}
|
|
||||||
async function sendDonationAd() {
|
|
||||||
// Function to send static donate ad
|
|
||||||
const links = [
|
|
||||||
"https://bit.ly/heltwittergoals",
|
|
||||||
"https://bit.ly/donatetohel",
|
|
||||||
"http://bit.ly/donothon_goals"
|
|
||||||
];
|
|
||||||
|
|
||||||
const messages = [
|
|
||||||
"Hel is currently celebrating her birthday with a donathon!",
|
|
||||||
`You can see goals and incentives here: ${links[0]}`,
|
|
||||||
`You can donate here: ${links[1]}`,
|
|
||||||
`Terms, conditions, rules and how rewards work are found here: ${links[2]}`,
|
|
||||||
"All donations and gifts are greatly appreciated, but please do so responsibly!"
|
|
||||||
];
|
|
||||||
|
|
||||||
for (const message of messages) {
|
|
||||||
await tClient.say(channel, message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (self) { return }
|
if (self) { return }
|
||||||
if (knownBots.has(userstate.username)) { return }
|
if (knownBots.has(userstate.username)) { return }
|
||||||
|
|
||||||
@@ -87,16 +45,16 @@ module.exports = {
|
|||||||
const cmd = args[0]
|
const cmd = args[0]
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case "mode":
|
case "mode":
|
||||||
if (userstate.badges.moderator != 1 && userstate.badges.broadcaster != 1) { break } // return stops all further operations, so you should just break out of switch
|
dClient.emit('Command/mode', channel, userstate, message, self, args[1])
|
||||||
let regex = /^(on|off)$/
|
|
||||||
if (!args[1].match(regex)) { break }
|
|
||||||
updateChatMode(await getIDByName(channel.substring(1)), args[1])
|
|
||||||
break;
|
break;
|
||||||
case "donate":
|
case "donate":
|
||||||
sendDonationAd()
|
dClient.emit('Command/donate', channel, userstate, message, self)
|
||||||
break;
|
break;
|
||||||
case "positivity":
|
case "positivity":
|
||||||
sendPositivity()
|
dClient.emit('Command/positivity', channel, userstate, message, self)
|
||||||
|
break;
|
||||||
|
case "commands":
|
||||||
|
dClient.emit('Command/commands', channel, userstate, message, self, args[1], args[2])
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
const { mClient, tClient } = require("../..");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'Command/commands',
|
||||||
|
once: false,
|
||||||
|
async execute(channel, userstate, message, self, name, state) {
|
||||||
|
const db = mClient.db('channels')
|
||||||
|
const coll = db.collection(channel)
|
||||||
|
const command = await coll.findOne({ name: 'commands' })
|
||||||
|
|
||||||
|
// create if not exists
|
||||||
|
if (!command) {
|
||||||
|
await coll.insertOne({
|
||||||
|
name: 'commands',
|
||||||
|
enabled: false // default
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default non-admin mode, give list of all enabled commands
|
||||||
|
if (!name) {
|
||||||
|
const commands = await coll.find({ enabled: true }).toArray()
|
||||||
|
var commandList = []
|
||||||
|
commands.forEach((command) => {
|
||||||
|
if (command.enabled) {
|
||||||
|
commandList.push(command.name)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (commandList.length == 0) {
|
||||||
|
return await tClient.say(channel, `No commands enabled in this channel`)
|
||||||
|
}
|
||||||
|
console.log(commandList)
|
||||||
|
await tClient.say(channel, `Command List: ${commandList.toString()}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (userstate.badges.moderator != 1 && userstate.badges.broadcaster != 1) { return }
|
||||||
|
|
||||||
|
if (!state) { return }
|
||||||
|
|
||||||
|
// Admin Mode & Additional Parameters were given
|
||||||
|
|
||||||
|
// Parameters are valid
|
||||||
|
switch (state) {
|
||||||
|
case 'on':
|
||||||
|
state = true
|
||||||
|
break;
|
||||||
|
case 'off':
|
||||||
|
state = false
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// command is valid
|
||||||
|
const findCommand = await coll.findOne({ name: name })
|
||||||
|
if (!findCommand) { return await tClient.say(channel, `Command [${name}] not found. Try using it first if it exists`) }
|
||||||
|
|
||||||
|
|
||||||
|
await coll.findOneAndUpdate({
|
||||||
|
name: name
|
||||||
|
}, {
|
||||||
|
$set: { enabled: state }
|
||||||
|
}, {
|
||||||
|
upsert: true
|
||||||
|
})
|
||||||
|
|
||||||
|
await tClient.say(channel, `[${name}] has been set to [${state}]`)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
const { mClient, tClient } = require("../..");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'Command/donate',
|
||||||
|
once: false,
|
||||||
|
async execute(channel, userstate, message, self) {
|
||||||
|
|
||||||
|
const db = mClient.db('channels')
|
||||||
|
const coll = db.collection(channel)
|
||||||
|
const command = await coll.findOne({ name: 'donate' })
|
||||||
|
|
||||||
|
// create if not exists
|
||||||
|
if (!command) {
|
||||||
|
await coll.insertOne({
|
||||||
|
name: 'donate',
|
||||||
|
enabled: false // default
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!command.enabled){ return }
|
||||||
|
|
||||||
|
async function sendDonationAd() {
|
||||||
|
// Function to send static donate ad
|
||||||
|
const links = [
|
||||||
|
"https://bit.ly/heltwittergoals",
|
||||||
|
"https://bit.ly/donatetohel",
|
||||||
|
"http://bit.ly/donothon_goals"
|
||||||
|
];
|
||||||
|
|
||||||
|
const messages = [
|
||||||
|
"Hel is currently celebrating her birthday with a donathon!",
|
||||||
|
`You can see goals and incentives here: ${links[0]}`,
|
||||||
|
`You can donate here: ${links[1]}`,
|
||||||
|
`Terms, conditions, rules and how rewards work are found here: ${links[2]}`,
|
||||||
|
"All donations and gifts are greatly appreciated, but please do so responsibly!"
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const message of messages) {
|
||||||
|
await tClient.say(channel, message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sendDonationAd()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
const { mClient } = require('../..')
|
||||||
|
const { updateChatMode, getIDByName } = require('../../functions')
|
||||||
|
module.exports = {
|
||||||
|
name: 'Command/mode',
|
||||||
|
once: false,
|
||||||
|
async execute(channel, userstate, message, self, params) {
|
||||||
|
const db = mClient.db('channels')
|
||||||
|
const coll = db.collection(channel)
|
||||||
|
const command = await coll.findOne({ name: 'mode' })
|
||||||
|
|
||||||
|
// create if not exists
|
||||||
|
if (!command) {
|
||||||
|
await coll.insertOne({
|
||||||
|
name: 'mode',
|
||||||
|
enabled: false // default
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (!command.enabled){ return }
|
||||||
|
|
||||||
|
if (userstate.badges.moderator != 1 && userstate.badges.broadcaster != 1) { return }
|
||||||
|
let regex = /^(on|off)$/
|
||||||
|
if (!params.match(regex)) { return }
|
||||||
|
updateChatMode(await getIDByName(channel.substring(1)), params)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
const { tClient, mClient } = require('../..')
|
||||||
|
module.exports = {
|
||||||
|
name: 'Command/positivity',
|
||||||
|
once: false,
|
||||||
|
async execute(channel, userstate, message, self) {
|
||||||
|
const db = mClient.db('channels')
|
||||||
|
const coll = db.collection(channel)
|
||||||
|
const command = await coll.findOne({ name: 'positivity' })
|
||||||
|
|
||||||
|
// create if not exists
|
||||||
|
if (!command) {
|
||||||
|
await coll.insertOne({
|
||||||
|
name: 'positivity',
|
||||||
|
enabled: false // default
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!command.enabled){ return }
|
||||||
|
|
||||||
|
async function sendPositivity() {
|
||||||
|
// Function sends a random string of predetermined positivity, Donothon Top Donator Reward
|
||||||
|
let positive_Messages = [
|
||||||
|
"You are so very worthy of all the love and support that may come your way.",
|
||||||
|
"There are many things which draw us together. In this time and place, that lovely subject is you, Hel.",
|
||||||
|
"The happiness and joy you add to the world is worth more than most anything.",
|
||||||
|
"You deserve every warm laugh, bright smile, and all the genuine kindness given to you.",
|
||||||
|
"There are few things as precious as your time. Thank you for sharing with us.",
|
||||||
|
"Your feelings are valid and you are not less than for having them.",
|
||||||
|
"I've seen all the work you do and I'm so very proud of you.",
|
||||||
|
"You are dearly cherished and I want to thank you for being so wonderfully you.",
|
||||||
|
"You. Are. Worthy. Enough. And I will tell you as many times as it takes for you to believe it.",
|
||||||
|
"Every day you give your best and that is so admirable. Don't let anyone tell you otherwise.",
|
||||||
|
"Your light is like that of the full moon, brightening our lives even in our darkest moments.",
|
||||||
|
"It's okay to take a moment to catch your breath. Even machines require maintenance from time to time.",
|
||||||
|
"Watching you succeed and achieve your heart's desires gives me so much motivation and I am very grateful for it."
|
||||||
|
]
|
||||||
|
|
||||||
|
let rdm = Math.floor(Math.random() * positive_Messages.length)
|
||||||
|
return tClient.say(channel, positive_Messages[rdm])
|
||||||
|
}
|
||||||
|
sendPositivity()
|
||||||
|
}
|
||||||
|
}
|
||||||
Generated
+31
-31
@@ -21,15 +21,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@discordjs/builders": {
|
"node_modules/@discordjs/builders": {
|
||||||
"version": "1.10.0",
|
"version": "1.10.1",
|
||||||
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.10.1.tgz",
|
||||||
"integrity": "sha512-ikVZsZP+3shmVJ5S1oM+7SveUCK3L9fTyfA8aJ7uD9cNQlTqF+3Irbk2Y22KXTb3C3RNUahRkSInClJMkHrINg==",
|
"integrity": "sha512-OWo1fY4ztL1/M/DUyRPShB4d/EzVfuUvPTRRHRIt/YxBrUYSz0a+JicD5F5zHFoNs2oTuWavxCOVFV1UljHTng==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discordjs/formatters": "^0.6.0",
|
"@discordjs/formatters": "^0.6.0",
|
||||||
"@discordjs/util": "^1.1.1",
|
"@discordjs/util": "^1.1.1",
|
||||||
"@sapphire/shapeshift": "^4.0.0",
|
"@sapphire/shapeshift": "^4.0.0",
|
||||||
"discord-api-types": "^0.37.114",
|
"discord-api-types": "^0.37.119",
|
||||||
"fast-deep-equal": "^3.1.3",
|
"fast-deep-equal": "^3.1.3",
|
||||||
"ts-mixer": "^6.0.4",
|
"ts-mixer": "^6.0.4",
|
||||||
"tslib": "^2.6.3"
|
"tslib": "^2.6.3"
|
||||||
@@ -66,9 +66,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@discordjs/rest": {
|
"node_modules/@discordjs/rest": {
|
||||||
"version": "2.4.2",
|
"version": "2.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.4.3.tgz",
|
||||||
"integrity": "sha512-9bOvXYLQd5IBg/kKGuEFq3cstVxAMJ6wMxO2U3wjrgO+lHv8oNCT+BBRpuzVQh7BoXKvk/gpajceGvQUiRoJ8g==",
|
"integrity": "sha512-+SO4RKvWsM+y8uFHgYQrcTl/3+cY02uQOH7/7bKbVZsTfrfpoE62o5p+mmV+s7FVhTX82/kQUGGbu4YlV60RtA==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discordjs/collection": "^2.1.1",
|
"@discordjs/collection": "^2.1.1",
|
||||||
@@ -76,10 +76,10 @@
|
|||||||
"@sapphire/async-queue": "^1.5.3",
|
"@sapphire/async-queue": "^1.5.3",
|
||||||
"@sapphire/snowflake": "^3.5.3",
|
"@sapphire/snowflake": "^3.5.3",
|
||||||
"@vladfrangu/async_event_emitter": "^2.4.6",
|
"@vladfrangu/async_event_emitter": "^2.4.6",
|
||||||
"discord-api-types": "^0.37.114",
|
"discord-api-types": "^0.37.119",
|
||||||
"magic-bytes.js": "^1.10.0",
|
"magic-bytes.js": "^1.10.0",
|
||||||
"tslib": "^2.6.3",
|
"tslib": "^2.6.3",
|
||||||
"undici": "6.19.8"
|
"undici": "6.21.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -113,18 +113,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@discordjs/ws": {
|
"node_modules/@discordjs/ws": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.2.1.tgz",
|
||||||
"integrity": "sha512-QH5CAFe3wHDiedbO+EI3OOiyipwWd+Q6BdoFZUw/Wf2fw5Cv2fgU/9UEtJRmJa9RecI+TAhdGPadMaEIur5yJg==",
|
"integrity": "sha512-PBvenhZG56a6tMWF/f4P6f4GxZKJTBG95n7aiGSPTnodmz4N5g60t79rSIAq7ywMbv8A4jFtexMruH+oe51aQQ==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discordjs/collection": "^2.1.0",
|
"@discordjs/collection": "^2.1.0",
|
||||||
"@discordjs/rest": "^2.4.1",
|
"@discordjs/rest": "^2.4.3",
|
||||||
"@discordjs/util": "^1.1.0",
|
"@discordjs/util": "^1.1.0",
|
||||||
"@sapphire/async-queue": "^1.5.2",
|
"@sapphire/async-queue": "^1.5.2",
|
||||||
"@types/ws": "^8.5.10",
|
"@types/ws": "^8.5.10",
|
||||||
"@vladfrangu/async_event_emitter": "^2.2.4",
|
"@vladfrangu/async_event_emitter": "^2.2.4",
|
||||||
"discord-api-types": "^0.37.114",
|
"discord-api-types": "^0.37.119",
|
||||||
"tslib": "^2.6.2",
|
"tslib": "^2.6.2",
|
||||||
"ws": "^8.17.0"
|
"ws": "^8.17.0"
|
||||||
},
|
},
|
||||||
@@ -148,9 +148,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mongodb-js/saslprep": {
|
"node_modules/@mongodb-js/saslprep": {
|
||||||
"version": "1.1.9",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz",
|
"resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.2.0.tgz",
|
||||||
"integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==",
|
"integrity": "sha512-+ywrb0AqkfaYuhHs6LxKWgqbh3I72EpEgESCw37o+9qPx9WTCkgDm2B+eMrwehGtHBWHFU4GXvnSCNiFhhausg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"sparse-bitfield": "^3.0.3"
|
"sparse-bitfield": "^3.0.3"
|
||||||
@@ -494,23 +494,23 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/discord.js": {
|
"node_modules/discord.js": {
|
||||||
"version": "14.17.3",
|
"version": "14.18.0",
|
||||||
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.17.3.tgz",
|
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.18.0.tgz",
|
||||||
"integrity": "sha512-8/j8udc3CU7dz3Eqch64UaSHoJtUT6IXK4da5ixjbav4NAXJicloWswD/iwn1ImZEMoAV3LscsdO0zhBh6H+0Q==",
|
"integrity": "sha512-SvU5kVUvwunQhN2/+0t55QW/1EHfB1lp0TtLZUSXVHDmyHTrdOj5LRKdR0zLcybaA15F+NtdWuWmGOX9lE+CAw==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discordjs/builders": "^1.10.0",
|
"@discordjs/builders": "^1.10.1",
|
||||||
"@discordjs/collection": "1.5.3",
|
"@discordjs/collection": "1.5.3",
|
||||||
"@discordjs/formatters": "^0.6.0",
|
"@discordjs/formatters": "^0.6.0",
|
||||||
"@discordjs/rest": "^2.4.2",
|
"@discordjs/rest": "^2.4.3",
|
||||||
"@discordjs/util": "^1.1.1",
|
"@discordjs/util": "^1.1.1",
|
||||||
"@discordjs/ws": "^1.2.0",
|
"@discordjs/ws": "^1.2.1",
|
||||||
"@sapphire/snowflake": "3.5.3",
|
"@sapphire/snowflake": "3.5.3",
|
||||||
"discord-api-types": "^0.37.114",
|
"discord-api-types": "^0.37.119",
|
||||||
"fast-deep-equal": "3.1.3",
|
"fast-deep-equal": "3.1.3",
|
||||||
"lodash.snakecase": "4.1.1",
|
"lodash.snakecase": "4.1.1",
|
||||||
"tslib": "^2.6.3",
|
"tslib": "^2.6.3",
|
||||||
"undici": "6.19.8"
|
"undici": "6.21.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -1335,9 +1335,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/undici": {
|
"node_modules/undici": {
|
||||||
"version": "6.19.8",
|
"version": "6.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz",
|
"resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz",
|
||||||
"integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==",
|
"integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.17"
|
"node": ">=18.17"
|
||||||
@@ -1365,9 +1365,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/whatwg-url": {
|
"node_modules/whatwg-url": {
|
||||||
"version": "14.1.0",
|
"version": "14.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.1.tgz",
|
||||||
"integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==",
|
"integrity": "sha512-mDGf9diDad/giZ/Sm9Xi2YcyzaFpbdLpJPr+E9fSkyQ7KpQD4SdFcugkRQYzhmfI4KeV4Qpnn2sKPdo+kmsgRQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tr46": "^5.0.0",
|
"tr46": "^5.0.0",
|
||||||
|
|||||||
Reference in New Issue
Block a user