mirror of
https://github.com/arthur-pbty/xiao.git
synced 2026-06-03 23:36:43 +02:00
Change to xiaodev
This commit is contained in:
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
Internet Systems Consortium license
|
Internet Systems Consortium license
|
||||||
===================================
|
===================================
|
||||||
|
|
||||||
Copyright (c) 2017-2026, lilyissillyyy
|
Copyright (c) 2017-2026, xiaobotdev
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any purpose
|
Permission to use, copy, modify, and/or distribute this software for any purpose
|
||||||
with or without fee is hereby granted, provided that the above copyright notice
|
with or without fee is hereby granted, provided that the above copyright notice
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Xiao
|
# Xiao
|
||||||

|

|
||||||
|
|
||||||
[](https://discord.gg/xX8PgCx2AP)
|
[](https://discord.gg/xX8PgCx2AP)
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ Only if you want to use the DECTalk command.
|
|||||||
* `NAME_RATER_EMOJI_ID` and `NAME_RATER_EMOJI_NAME` are for **name-rater**. Defaults to nothing, it just won't be there.
|
* `NAME_RATER_EMOJI_ID` and `NAME_RATER_EMOJI_NAME` are for **name-rater**. Defaults to nothing, it just won't be there.
|
||||||
|
|
||||||
#### API Keys, IDs, and Secrets
|
#### API Keys, IDs, and Secrets
|
||||||
* `ANILIST_USERNAME` is your username for [Anilist](https://anilist.co/home). Optional, defaults to "lilyissillyyy".
|
* `ANILIST_USERNAME` is your username for [Anilist](https://anilist.co/home). Optional.
|
||||||
* `BITLY_KEY` is your API key for Bit.ly. You can get one [here](https://dev.bitly.com/docs/getting-started/authentication/).
|
* `BITLY_KEY` is your API key for Bit.ly. You can get one [here](https://dev.bitly.com/docs/getting-started/authentication/).
|
||||||
* `CLEVERBOT_KEY` is your API key for Cleverbot. You can get one [here](https://www.cleverbot.com/api/).
|
* `CLEVERBOT_KEY` is your API key for Cleverbot. You can get one [here](https://www.cleverbot.com/api/).
|
||||||
* `GITHUB_ACCESS_TOKEN` is your access token for GitHub. [Follow these steps](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic) to make one.
|
* `GITHUB_ACCESS_TOKEN` is your access token for GitHub. [Follow these steps](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic) to make one.
|
||||||
@@ -82,7 +82,7 @@ Only if you want to use the DECTalk command.
|
|||||||
* `THECATAPI_KEY` is your API key for The Cat API. You can get one [here](https://thecatapi.com/).
|
* `THECATAPI_KEY` is your API key for The Cat API. You can get one [here](https://thecatapi.com/).
|
||||||
* `THEDOGAPI_KEY` is your API key for The Dog API. You can get one [here](https://thedogapi.com/).
|
* `THEDOGAPI_KEY` is your API key for The Dog API. You can get one [here](https://thedogapi.com/).
|
||||||
* `WEBSTER_KEY` is your API key for Merriam-Webster. You can get one [here](https://dictionaryapi.com/).
|
* `WEBSTER_KEY` is your API key for Merriam-Webster. You can get one [here](https://dictionaryapi.com/).
|
||||||
* `XIAO_GITHUB_REPO_NAME` and `XIAO_GITHUB_REPO_USERNAME` are the name and username of the GitHub repo where Xiao lives. These are optional, and default to "xiao" and "lilyissillyyy" respectively.
|
* `XIAO_GITHUB_REPO_NAME` and `XIAO_GITHUB_REPO_USERNAME` are the name and username of the GitHub repo where Xiao lives. These are optional, and default to "xiao" and "xiaobotdev" respectively.
|
||||||
|
|
||||||
### Encrypting `.env`
|
### Encrypting `.env`
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@ Only if you want to use the DECTalk command.
|
|||||||
|
|
||||||
1. Install [Node.js](https://nodejs.org/en/).
|
1. Install [Node.js](https://nodejs.org/en/).
|
||||||
2. Run `apt install git` to install git.
|
2. Run `apt install git` to install git.
|
||||||
3. Clone this repository with `git clone https://github.com/lilyissillyyy/xiao.git`.
|
3. Clone this repository with `git clone https://github.com/xiaobotdev/xiao.git`.
|
||||||
4. Run `cd xiao` to move into the folder that you just created.
|
4. Run `cd xiao` to move into the folder that you just created.
|
||||||
5. Create a file named `.env` and fill it out as shown in above and in `.env.example`.
|
5. Create a file named `.env` and fill it out as shown in above and in `.env.example`.
|
||||||
6. Run `apt update` and `apt upgrade` to install the latest dependencies of your distro.
|
6. Run `apt update` and `apt upgrade` to install the latest dependencies of your distro.
|
||||||
|
|||||||
@@ -13527,7 +13527,6 @@
|
|||||||
"Yesterday's lunch, today's snack.",
|
"Yesterday's lunch, today's snack.",
|
||||||
"Bort Sampson's catchphrase, \"eat pant\".",
|
"Bort Sampson's catchphrase, \"eat pant\".",
|
||||||
"The cheap Lando knock-off named Rando Cardrissian.",
|
"The cheap Lando knock-off named Rando Cardrissian.",
|
||||||
"lilyissillyyy.",
|
|
||||||
"Xiao.",
|
"Xiao.",
|
||||||
"[object Object]",
|
"[object Object]",
|
||||||
"The eventual release of Xiao's public source code."
|
"The eventual release of Xiao's public source code."
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[
|
[
|
||||||
"©2017-2026 lilyissillyyy",
|
"©2017-2026 xiaobotdev",
|
||||||
"Rune Factory: ©2012 Marvelous Inc.",
|
"Rune Factory: ©2012 Marvelous Inc.",
|
||||||
"Avatar Art: ©2018 airful"
|
"Avatar Art: ©2018 airful"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -243,11 +243,6 @@
|
|||||||
"minTime": 123,
|
"minTime": 123,
|
||||||
"origin": "Hoarse and Horse sound similar"
|
"origin": "Hoarse and Horse sound similar"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Lily is Silly",
|
|
||||||
"minTime": 960,
|
|
||||||
"origin": "Creator of Xiao lilyissillyyy"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Long Face",
|
"name": "Long Face",
|
||||||
"minTime": 143,
|
"minTime": 143,
|
||||||
|
|||||||
+10
-10
@@ -1,10 +1,10 @@
|
|||||||
[
|
[
|
||||||
"The `can-you-not` command was created to annoy one of Lily's friends, as that was their catchphrase.",
|
"The `can-you-not` command was created to annoy one of my developer's friends, as that was their catchphrase.",
|
||||||
"The `hat` command was made so that Lily wouldn't have to create a new avatar for Xiao every time a holiday came around.",
|
"The `hat` command was made so that my developer wouldn't have to create a new avatar for Xiao every time a holiday came around.",
|
||||||
"The `steam-now-playing` command was created by taking a screenshot of the \"Now Playing\" message from Steam, so it has to be updated every time Steam changes the design.",
|
"The `steam-now-playing` command was created by taking a screenshot of the \"Now Playing\" message from Steam, so it has to be updated every time Steam changes the design.",
|
||||||
"The `glitch` command was created by accident. Lily accidently gave the `distort` command the wrong settings, and as a result created a glitchy mess, which became it's own command.",
|
"The `glitch` command was created by accident. My developer accidently gave the `distort` command the wrong settings, and as a result created a glitchy mess, which became it's own command.",
|
||||||
"Lily still has no idea why the `cursed-sponge` command was added.",
|
"My developer still has no idea why the `cursed-sponge` command was added.",
|
||||||
"The `kyon-gun` command was what made Lily watch Haruhi, which became one of her favorite anime.",
|
"The `kyon-gun` command was what made my developer watch Haruhi, which became one of her favorite anime.",
|
||||||
"The `challenger` command will automatically check images for transparency, and silhouette them only if there is some.",
|
"The `challenger` command will automatically check images for transparency, and silhouette them only if there is some.",
|
||||||
"Several \"Meme Generator\" commands were created during a meme's prime popularity, and as a result many of them are based on long-dead memes.",
|
"Several \"Meme Generator\" commands were created during a meme's prime popularity, and as a result many of them are based on long-dead memes.",
|
||||||
"The `tebahpla` command's name is literally \"alphabet\" backwards.",
|
"The `tebahpla` command's name is literally \"alphabet\" backwards.",
|
||||||
@@ -24,11 +24,11 @@
|
|||||||
"In NSFW channels, `kiss-marry-kill` turns into `fuck-marry-kill`.",
|
"In NSFW channels, `kiss-marry-kill` turns into `fuck-marry-kill`.",
|
||||||
"The `light-novel-title` command only exists because `light-novel-cover` often gives NSFW covers.",
|
"The `light-novel-title` command only exists because `light-novel-cover` often gives NSFW covers.",
|
||||||
"The `quantum-coin` command is based on a bug that caused the `coin` command to give weird results.",
|
"The `quantum-coin` command is based on a bug that caused the `coin` command to give weird results.",
|
||||||
"Most \"Seeded Randomizer\" commands have a special response when used on Lily.",
|
"Most \"Seeded Randomizer\" commands have a special response when used on my developer.",
|
||||||
"Xiao will not let you use \"Seeded Randomizer\" commands on her, instead giving a snarky response about how good she is.",
|
"Xiao will not let you use \"Seeded Randomizer\" commands on her, instead giving a snarky response about how good she is.",
|
||||||
"The `dick` command, when used on Xiao, will give your own size, plus one.",
|
"The `dick` command, when used on Xiao, will give your own size, plus one.",
|
||||||
"There are several special timezones in `time`, such as \"Discord\", \"Lily\", and \"Neopia\".",
|
"There are several special timezones in `time`, such as \"Discord\" and \"Neopia\".",
|
||||||
"The `anime` and `manga` commands have used MyAnimeList, Kitsu, and Anilist over their development. The current use of Anilist is due to Lily's status as a data mod there.",
|
"The `anime` and `manga` commands have used MyAnimeList, Kitsu, and Anilist over their development. The current use of Anilist is due to my developer using it.",
|
||||||
"The `periodic-table` command will give Jerktonium from SpongeBob SquarePants if you ask for Atomic Number 0.",
|
"The `periodic-table` command will give Jerktonium from SpongeBob SquarePants if you ask for Atomic Number 0.",
|
||||||
"The `give-flower` command was the first command added to Xiao.",
|
"The `give-flower` command was the first command added to Xiao.",
|
||||||
"Xiao is the best bot ever.",
|
"Xiao is the best bot ever.",
|
||||||
@@ -42,10 +42,10 @@
|
|||||||
"The text in the box of the `axis-cult-sign-up` command's image reads \"ERIS PADS HER CHEST!\".",
|
"The text in the box of the `axis-cult-sign-up` command's image reads \"ERIS PADS HER CHEST!\".",
|
||||||
"In the `roman` command, typing \"zero\" will give you \"_nulla_\", the latin word for zero. This is because zero does not exist in roman numerals.",
|
"In the `roman` command, typing \"zero\" will give you \"_nulla_\", the latin word for zero. This is because zero does not exist in roman numerals.",
|
||||||
"The `horse-race` command contains several references: real horse names, My Little Pony characters, and various pop culture jokes. Even a few Xiao jokes are snuck in there!",
|
"The `horse-race` command contains several references: real horse names, My Little Pony characters, and various pop culture jokes. Even a few Xiao jokes are snuck in there!",
|
||||||
"In `horse-race`, you will occasionally encounter horses named \"Donald Trump\" and \"Lily is Silly\". Be careful, as these aren't horses, their times are based on the actual human running the race!",
|
"In `horse-race`, you will occasionally encounter a horse named \"Donald Trump\". Be careful, this isn't a horse, it's the actual human running the race!",
|
||||||
"Numerous commands use a massive 2,000,000 entry array to check for adult sites. Some _still_ fall through the cracks.",
|
"Numerous commands use a massive 2,000,000 entry array to check for adult sites. Some _still_ fall through the cracks.",
|
||||||
"The `ship` command will call you a narcissist if you test yourself with yourself.",
|
"The `ship` command will call you a narcissist if you test yourself with yourself.",
|
||||||
"Whenever Lily gets a real fortune cookie, she adds the fortune to the `fortune` command.",
|
"Whenever my developer gets a real fortune cookie, she adds the fortune to the `fortune` command.",
|
||||||
"The `whos-that-pokemon` command will play a sound effect and the Pokémon's cry if both you and the bot are in a voice channel when the command is used.",
|
"The `whos-that-pokemon` command will play a sound effect and the Pokémon's cry if both you and the bot are in a voice channel when the command is used.",
|
||||||
"The `pokedex` command will play the Pokémon's cry if both you and the bot are in a voice channel when the command is used.",
|
"The `pokedex` command will play the Pokémon's cry if both you and the bot are in a voice channel when the command is used.",
|
||||||
"Reminders in the `remind` command have a maximum length of ~24.84 days. This is due to how JavaScript timeouts work, anything higher than this will fire early, or possibly even instantly.",
|
"Reminders in the `remind` command have a maximum length of ~24.84 days. This is due to how JavaScript timeouts work, anything higher than this will fire early, or possibly even instantly.",
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ module.exports = class TimeCommand extends Command {
|
|||||||
run(msg, { timeZone }) {
|
run(msg, { timeZone }) {
|
||||||
const time = moment().tz(timeZone).format('h:mm A');
|
const time = moment().tz(timeZone).format('h:mm A');
|
||||||
const location = timeZone.split('/');
|
const location = timeZone.split('/');
|
||||||
const word = location[0] === 'Lily' ? 'for' : 'in';
|
const word = location[0] === 'Dev' ? 'for my' : 'in';
|
||||||
const main = firstUpperCase(location[0], /[_ ]/);
|
const main = firstUpperCase(location[0], /[_ ]/);
|
||||||
const sub = location[1] ? firstUpperCase(location[1], /[_ ]/) : null;
|
const sub = location[1] ? firstUpperCase(location[1], /[_ ]/) : null;
|
||||||
const subMain = location[2] ? firstUpperCase(location[2], /[_ ]/) : null;
|
const subMain = location[2] ? firstUpperCase(location[2], /[_ ]/) : null;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ const cheerio = require('cheerio');
|
|||||||
const { stripIndents } = require('common-tags');
|
const { stripIndents } = require('common-tags');
|
||||||
const { cleanAnilistHTML, embedURL } = require('../../util/Util');
|
const { cleanAnilistHTML, embedURL } = require('../../util/Util');
|
||||||
const logos = require('../../assets/json/logos');
|
const logos = require('../../assets/json/logos');
|
||||||
const ANILIST_USERNAME = process.env.ANILIST_USERNAME || 'lilyissillyyy';
|
const ANILIST_USERNAME = process.env.ANILIST_USERNAME || 'AniList';
|
||||||
const searchGraphQL = stripIndents`
|
const searchGraphQL = stripIndents`
|
||||||
query ($search: String, $type: MediaType, $isAdult: Boolean) {
|
query ($search: String, $type: MediaType, $isAdult: Boolean) {
|
||||||
anime: Page (perPage: 10) {
|
anime: Page (perPage: 10) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ const cheerio = require('cheerio');
|
|||||||
const { stripIndents } = require('common-tags');
|
const { stripIndents } = require('common-tags');
|
||||||
const { cleanAnilistHTML, embedURL } = require('../../util/Util');
|
const { cleanAnilistHTML, embedURL } = require('../../util/Util');
|
||||||
const logos = require('../../assets/json/logos');
|
const logos = require('../../assets/json/logos');
|
||||||
const ANILIST_USERNAME = process.env.ANILIST_USERNAME || 'lilyissillyyy';
|
const ANILIST_USERNAME = process.env.ANILIST_USERNAME || 'AniList';
|
||||||
const searchGraphQL = stripIndents`
|
const searchGraphQL = stripIndents`
|
||||||
query ($search: String, $type: MediaType, $isAdult: Boolean) {
|
query ($search: String, $type: MediaType, $isAdult: Boolean) {
|
||||||
anime: Page (perPage: 10) {
|
anime: Page (perPage: 10) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ const { EmbedBuilder } = require('discord.js');
|
|||||||
const request = require('node-superfetch');
|
const request = require('node-superfetch');
|
||||||
const { shorten, embedURL } = require('../../util/Util');
|
const { shorten, embedURL } = require('../../util/Util');
|
||||||
const { GITHUB_ACCESS_TOKEN } = process.env;
|
const { GITHUB_ACCESS_TOKEN } = process.env;
|
||||||
const XIAO_GITHUB_REPO_USERNAME = process.env.XIAO_GITHUB_REPO_USERNAME || 'lilyissillyyy';
|
const XIAO_GITHUB_REPO_USERNAME = process.env.XIAO_GITHUB_REPO_USERNAME || 'xiaobotdev';
|
||||||
const XIAO_GITHUB_REPO_NAME = process.env.XIAO_GITHUB_REPO_NAME || 'xiao';
|
const XIAO_GITHUB_REPO_NAME = process.env.XIAO_GITHUB_REPO_NAME || 'xiao';
|
||||||
|
|
||||||
module.exports = class ChangelogCommand extends Command {
|
module.exports = class ChangelogCommand extends Command {
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ module.exports = class GenerateCreditCommand extends Command {
|
|||||||
if (!commands.size) return null;
|
if (!commands.size) return null;
|
||||||
return commands.map(c => {
|
return commands.map(c => {
|
||||||
const credits = c.credit
|
const credits = c.credit
|
||||||
.filter(cred => cred.name !== 'Lily is Silly')
|
.filter(cred => cred.name !== 'Xiao Dev')
|
||||||
.map(cred => {
|
.map(cred => {
|
||||||
const reason = cred.reasonURL ? embedURL(cred.reason, cred.reasonURL) : cred.reason;
|
const reason = cred.reasonURL ? embedURL(cred.reason, cred.reasonURL) : cred.reason;
|
||||||
return `${embedURL(cred.name, cred.url)} (${reason})`;
|
return `${embedURL(cred.name, cred.url)} (${reason})`;
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ module.exports = class Command {
|
|||||||
this.sendTyping = typeof options.sendTyping === 'undefined' ? true : Boolean(options.sendTyping);
|
this.sendTyping = typeof options.sendTyping === 'undefined' ? true : Boolean(options.sendTyping);
|
||||||
this.credit = options.credit || [];
|
this.credit = options.credit || [];
|
||||||
this.credit.push({
|
this.credit.push({
|
||||||
name: 'Lily is Silly',
|
name: 'Xiao Dev',
|
||||||
url: 'https://github.com/lilyissillyyy',
|
url: 'https://github.com/xiaobotdev',
|
||||||
reason: 'Code'
|
reason: 'Code'
|
||||||
});
|
});
|
||||||
this.uses = 0;
|
this.uses = 0;
|
||||||
|
|||||||
+5
-5
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "xiao",
|
"name": "xiao",
|
||||||
"version": "160.0.2",
|
"version": "160.0.3",
|
||||||
"description": "Your personal server companion.",
|
"description": "Your personal server companion.",
|
||||||
"main": "Xiao.js",
|
"main": "Xiao.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/lilyissillyyy/xiao.git"
|
"url": "git+https://github.com/xiaobotdev/xiao.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"bot",
|
"bot",
|
||||||
@@ -19,12 +19,12 @@
|
|||||||
"discord-bot",
|
"discord-bot",
|
||||||
"discord-js"
|
"discord-js"
|
||||||
],
|
],
|
||||||
"author": "lilyissillyyy <lilyodendahl@gmail.com>",
|
"author": "xiaobotdev",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/lilyissillyyy/xiao/issues"
|
"url": "https://github.com/xiaobotdev/xiao/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/lilyissillyyy/xiao#readme",
|
"homepage": "https://github.com/xiaobotdev/xiao#readme",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=24"
|
"node": ">=24"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ module.exports = class XiaoClient extends CommandClient {
|
|||||||
setTimezones() {
|
setTimezones() {
|
||||||
moment.tz.link('America/Vancouver|Neopia');
|
moment.tz.link('America/Vancouver|Neopia');
|
||||||
moment.tz.link('America/Los_Angeles|Discord');
|
moment.tz.link('America/Los_Angeles|Discord');
|
||||||
moment.tz.link('America/New_York|Lily');
|
moment.tz.link('America/New_York|Dev');
|
||||||
}
|
}
|
||||||
|
|
||||||
async fetchAdultSiteList(force = false) {
|
async fetchAdultSiteList(force = false) {
|
||||||
|
|||||||
Reference in New Issue
Block a user