generated from nhcarrigan/template
Compare commits
3 Commits
3d301122b9
..
v1.0.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 88326b802e | |||
| 71308283ef | |||
| 186fe97f30 |
@@ -0,0 +1,38 @@
|
||||
name: Node.js CI
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: Lint and Test
|
||||
|
||||
steps:
|
||||
- name: Checkout Source Files
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Use Node.js v22
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: 9
|
||||
|
||||
- name: Install Dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Lint Source Files
|
||||
run: pnpm run lint
|
||||
|
||||
- name: Verify Build
|
||||
run: pnpm run build
|
||||
|
||||
- name: Run Tests
|
||||
run: pnpm run test
|
||||
@@ -1,20 +1,10 @@
|
||||
# New Repository Template
|
||||
# Chibika
|
||||
|
||||
This template contains all of our basic files for a new GitHub repository. There is also a handy workflow that will create an issue on a new repository made from this template, with a checklist for the steps we usually take in setting up a new repository.
|
||||
|
||||
If you're starting a Node.JS project with TypeScript, we have a [specific template](https://github.com/naomi-lgbt/nodejs-typescript-template) for that purpose.
|
||||
|
||||
## Readme
|
||||
|
||||
Delete all of the above text (including this line), and uncomment the below text to use our standard readme template.
|
||||
|
||||
<!-- # Project Name
|
||||
|
||||
Project Description
|
||||
A Discord application that sends ASCII art on demand!
|
||||
|
||||
## Live Version
|
||||
|
||||
This page is currently deployed. [View the live website.]
|
||||
This page is currently deployed. [Add to your Discord!](https://discord.com/oauth2/authorize?client_id=1396225647269122098)
|
||||
|
||||
## Feedback and Bugs
|
||||
|
||||
@@ -36,4 +26,4 @@ Copyright held by Naomi Carrigan.
|
||||
|
||||
## Contact
|
||||
|
||||
We may be contacted through our [Chat Server](http://chat.nhcarrigan.com) or via email at `contact@nhcarrigan.com`. -->
|
||||
We may be contacted through our [Chat Server](http://chat.nhcarrigan.com) or via email at `contact@nhcarrigan.com`.
|
||||
|
||||
+4
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "chibika",
|
||||
"version": "0.0.0",
|
||||
"version": "1.0.0",
|
||||
"description": "A bot that shares ASCII art.",
|
||||
"main": "index.js",
|
||||
"type": "module",
|
||||
@@ -8,7 +8,7 @@
|
||||
"lint": "eslint ./src --max-warnings 0",
|
||||
"build": "tsc",
|
||||
"start": "op run --env-file=./prod.env -- node ./prod/index.js",
|
||||
"test": "echo 'No tests yet' && exit 0"
|
||||
"test": "vitest run"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
@@ -18,7 +18,8 @@
|
||||
"@nhcarrigan/eslint-config": "5.2.0",
|
||||
"@nhcarrigan/typescript-config": "4.0.0",
|
||||
"eslint": "9.31.0",
|
||||
"typescript": "5.8.3"
|
||||
"typescript": "5.8.3",
|
||||
"vitest": "3.2.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nhcarrigan/logger": "1.0.0",
|
||||
|
||||
Generated
+3
@@ -30,6 +30,9 @@ importers:
|
||||
typescript:
|
||||
specifier: 5.8.3
|
||||
version: 5.8.3
|
||||
vitest:
|
||||
specifier: 3.2.4
|
||||
version: 3.2.4(@types/node@24.0.15)
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
+81
-1
@@ -6,4 +6,84 @@
|
||||
|
||||
import type { Ascii } from "../interfaces/ascii.js";
|
||||
|
||||
export const cats: Array<Ascii> = [];
|
||||
export const cats: Array<Ascii> = [
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: ` /\\_/\\
|
||||
( o.o )
|
||||
> ^ <`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: ` /\\ /\\
|
||||
( . .)
|
||||
) (
|
||||
( v )
|
||||
^^ ^ ^^`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: ` /\\_/\\
|
||||
( -.- )
|
||||
_/ \\_
|
||||
( \\ ___ / )
|
||||
\\ ___ /
|
||||
^^ ^^`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: ` |\\ _,,,---,,_
|
||||
/,\`.-'\`' -. ;-;;,_
|
||||
|,4- ) )-,_..;\\ ( \`'-'
|
||||
'---''(_/--' \`-'\\_)`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: ` /\\___/\\
|
||||
( o o )
|
||||
) _ (
|
||||
( (_) )
|
||||
( ( )-( ) )
|
||||
(__(__)_(__))`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: ` |\\ /|
|
||||
| \\____/ |
|
||||
| | | |
|
||||
\\ | | /
|
||||
\\|__|/
|
||||
/__\\`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: ` /\\ /\\
|
||||
( ^ ^ )
|
||||
) (
|
||||
( ___ )
|
||||
( ( ) ) )
|
||||
(__(__)_(__))`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: ` /\\ /\\
|
||||
{ \`---' }
|
||||
{ O O }
|
||||
~~>{ V }<~~
|
||||
\\ \\|/ /
|
||||
\`-----'`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: ` . .
|
||||
\\ /
|
||||
___\\___/___
|
||||
/ \\
|
||||
( @ @ )
|
||||
\\ ^ /
|
||||
| \\_____/ |
|
||||
\\ /
|
||||
\\_____/`,
|
||||
},
|
||||
|
||||
];
|
||||
|
||||
+146
-1
@@ -6,4 +6,149 @@
|
||||
|
||||
import type { Ascii } from "../interfaces/ascii.js";
|
||||
|
||||
export const emoji: Array<Ascii> = [];
|
||||
export const emoji: Array<Ascii> = [
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: `⬜⬜🌸⬜⬜⬜⬜⬜⬜⬜⬜⬜🌸⬜⬜
|
||||
⬜⬜⬜⬜⬜⬜🌸⬜⬜⬜⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬛⬛⬛⬜🌸⬜⬛⬛⬛⬜⬜⬜
|
||||
⬜⬜⬛🌸🌸🌸⬛⬜⬛🌸🌸🌸⬛⬜⬜
|
||||
⬜⬛🌸🌸🌸🌸🌸⬛🌸🌸🌸🌸🌸⬛⬜
|
||||
⬜⬛🌸🌸🌸🌸🌸⬛🌸🌸🌸🌸🌸⬛⬜
|
||||
⬜⬛🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸⬛⬜
|
||||
⬜⬛🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸⬛⬜
|
||||
⬜⬜⬛🌸🌸🌸🌸🌸🌸🌸🌸🌸⬛⬜⬜
|
||||
⬜⬜⬜⬛🌸🌸🌸🌸🌸🌸🌸⬛⬜⬜⬜
|
||||
⬜⬜⬜⬜⬛🌸🌸🌸🌸🌸⬛⬜⬜⬜⬜
|
||||
⬜🌸⬜🌸⬜⬛🌸🌸🌸⬛⬜🌸⬜🌸⬜
|
||||
🌸🌸🌸🌸🌸⬜⬛🌸⬛⬜⬜⬜🌸⬜⬜
|
||||
⬜🌸🌸🌸⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜🌸
|
||||
⬜⬜🌸⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: `⬜⬜⬜⬜⬜🌟⬜⬜⬜🌟⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜🌟🌟🌟⬜🌟🌟🌟⬜⬜⬜⬜
|
||||
⬜⬜⬜🌟🌟🌟🌟🌟🌟🌟🌟🌟⬜⬜⬜
|
||||
⬜⬜🌟🌟🟡🟡🌟🌟🌟🟡🟡🌟🌟⬜⬜
|
||||
⬜🌟🌟🟡🟡🟡🟡🌟🟡🟡🟡🟡🌟🌟⬜
|
||||
🌟🌟🟡🟡🟡🟡🟡🌟🟡🟡🟡🟡🟡🌟🌟
|
||||
🌟🟡🟡🟡⬛🟡🟡🟡🟡🟡⬛🟡🟡🟡🌟
|
||||
🌟🟡🟡🟡⬛🟡🟡🟡🟡🟡⬛🟡🟡🟡🌟
|
||||
🌟🟡🟡🟡🟡🟡🟡⬛🟡🟡🟡🟡🟡🟡🌟
|
||||
🌟🟡🟡🟡🟡🟡⬛⬛⬛🟡🟡🟡🟡🟡🌟
|
||||
🌟🌟🟡🟡🟡🟡🟡⬛🟡🟡🟡🟡🟡🌟🌟
|
||||
⬜🌟🌟🟡🟡🟡🟡🟡🟡🟡🟡🟡🌟🌟⬜
|
||||
⬜⬜🌟🌟🟡🟡🟡🟡🟡🟡🟡🌟🌟⬜⬜
|
||||
⬜⬜⬜🌟🌟🌟🌟🌟🌟🌟🌟🌟⬜⬜⬜
|
||||
⬜⬜⬜⬜🌟🌟🌟⬜🌟🌟🌟⬜⬜⬜⬜`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: `⬜⬜⬜⬜⬜⬜💙⬜💙⬜⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜💙💙💙💙💙⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜💙💙💙💙💙💙💙⬜⬜⬜⬜
|
||||
⬜⬜⬜💙💙💙💙💙💙💙💙💙⬜⬜⬜
|
||||
⬜⬜💙💙⬜💙💙💙💙💙⬜💙💙⬜⬜
|
||||
⬜💙💙⬜⬜⬜💙💙💙⬜⬜⬜💙💙⬜
|
||||
💙💙⬜⬜⬜⬜⬜💙⬜⬜⬜⬜⬜💙💙
|
||||
💙⬜⬜⬜⬜⬜⬜💙⬜⬜⬜⬜⬜⬜💙
|
||||
💙💙⬜⬜⬜⬜💙💙💙⬜⬜⬜⬜💙💙
|
||||
⬜💙💙⬜⬜💙💙💙💙💙⬜⬜💙💙⬜
|
||||
⬜⬜💙💙💙💙💙💙💙💙💙💙💙⬜⬜
|
||||
⬜⬜⬜💙💙💙💙💙💙💙💙💙⬜⬜⬜
|
||||
⬜⬜⬜⬜💙💙💙💙💙💙💙⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜💙💙💙💙💙⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜⬜💙⬜💙⬜⬜⬜⬜⬜⬜`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: `🌺⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🌺
|
||||
⬜🌺⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🌺⬜
|
||||
⬜⬜🌺⬜⬜⬜⬜⬜⬜⬜⬜⬜🌺⬜⬜
|
||||
⬜⬜⬜🌺⬜⬜⬜⬜⬜⬜⬜🌺⬜⬜⬜
|
||||
⬜⬜⬜⬜🌺⬜⬜⬜⬜⬜🌺⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜🌺⬜⬜⬜🌺⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜⬜🌺⬜🌺⬜⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜⬜⬜💖⬜⬜⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜⬜🌺⬜🌺⬜⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜🌺⬜⬜⬜🌺⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜🌺⬜⬜⬜⬜⬜🌺⬜⬜⬜⬜
|
||||
⬜⬜⬜🌺⬜⬜⬜⬜⬜⬜⬜🌺⬜⬜⬜
|
||||
⬜⬜🌺⬜⬜⬜⬜⬜⬜⬜⬜⬜🌺⬜⬜
|
||||
⬜🌺⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🌺⬜
|
||||
🌺⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🌺`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: `⬜⬜⬜⬜⬜⬜⭐⬜⭐⬜⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜⭐⭐⭐⭐⭐⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⭐⭐⭐⭐⭐⭐⭐⬜⬜⬜⬜
|
||||
⬜⬜⬜⭐⬛⭐⭐⭐⭐⭐⬛⭐⬜⬜⬜
|
||||
⬜⬜⭐⬛⬛⬛⭐⭐⭐⬛⬛⬛⭐⬜⬜
|
||||
⬜⭐⬛⬛⬛⬛⬛⭐⬛⬛⬛⬛⬛⭐⬜
|
||||
⭐⬛⬛⬛⬛⬛⬛⭐⬛⬛⬛⬛⬛⬛⭐
|
||||
⭐⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⭐
|
||||
⭐⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⭐
|
||||
⬜⭐⬛⬛⬛⬛⬛⭐⬛⬛⬛⬛⬛⭐⬜
|
||||
⬜⬜⭐⬛⬛⬛⭐⭐⭐⬛⬛⬛⭐⬜⬜
|
||||
⬜⬜⬜⭐⬛⭐⭐⭐⭐⭐⬛⭐⬜⬜⬜
|
||||
⬜⬜⬜⬜⭐⭐⭐⭐⭐⭐⭐⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜⭐⭐⭐⭐⭐⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜⬜⭐⬜⭐⬜⬜⬜⬜⬜⬜`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: `⬜⬜⬜⬜⬜🌿⬜⬜⬜🌿⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜🌿🌿🌿⬜🌿🌿🌿⬜⬜⬜⬜
|
||||
⬜⬜⬜🌿🌿🌿🌿🌿🌿🌿🌿🌿⬜⬜⬜
|
||||
⬜⬜🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿⬜⬜
|
||||
⬜🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿⬜
|
||||
🌿🌿🌿🌿🌿⬛🌿🌿🌿⬛🌿🌿🌿🌿🌿
|
||||
🌿🌿🌿🌿⬛⬛⬛🌿⬛⬛⬛🌿🌿🌿🌿
|
||||
🌿🌿🌿🌿🌿⬛🌿🌿🌿⬛🌿🌿🌿🌿🌿
|
||||
🌿🌿🌿🌿🌿🌿🌿🔥🌿🌿🌿🌿🌿🌿🌿
|
||||
🌿🌿🌿🌿🌿🌿🔥🔥🔥🌿🌿🌿🌿🌿🌿
|
||||
⬜🌿🌿🌿🌿🌿🌿🔥🌿🌿🌿🌿🌿🌿⬜
|
||||
⬜⬜🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿⬜⬜
|
||||
⬜⬜⬜🌿🌿🌿🌿🌿🌿🌿🌿🌿⬜⬜⬜
|
||||
⬜⬜⬜⬜🌿🌿🌿⬜🌿🌿🌿⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜🌿⬜⬜⬜🌿⬜⬜⬜⬜⬜`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: `⬜⬜⬜🌙⬜⬜⬜⬜⬜⬜⬜🌙⬜⬜⬜
|
||||
⬜⬜🌙🌙🌙⬜⬜⬜⬜⬜🌙🌙🌙⬜⬜
|
||||
⬜🌙🌙🌙🌙🌙⬜⬜⬜🌙🌙🌙🌙🌙⬜
|
||||
🌙🌙🌙🌙🌙🌙🌙⬜🌙🌙🌙🌙🌙🌙🌙
|
||||
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
|
||||
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
|
||||
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
|
||||
🌙🌙🌙🌙🌙🌙🌙💫🌙🌙🌙🌙🌙🌙🌙
|
||||
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
|
||||
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
|
||||
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
|
||||
⬜🌙🌙🌙🌙🌙⬜⬜⬜🌙🌙🌙🌙🌙⬜
|
||||
⬜⬜🌙🌙🌙⬜⬜⬜⬜⬜🌙🌙🌙⬜⬜
|
||||
⬜⬜⬜🌙⬜⬜⬜⬜⬜⬜⬜🌙⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜`,
|
||||
},
|
||||
{
|
||||
author: "Naomi Carrigan",
|
||||
text: `⬜⬜⬜⬜⬜⬜⬜🔥⬜⬜⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜⬜🔥🔥🔥⬜⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜🔥🔥🔥🔥🔥⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜🔥🔥🔥🔥🔥🔥🔥⬜⬜⬜⬜
|
||||
⬜⬜⬜🔥🔥🔥🔥🔥🔥🔥🔥🔥⬜⬜⬜
|
||||
⬜⬜🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥⬜⬜
|
||||
⬜🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥⬜
|
||||
🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥
|
||||
⬜🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥⬜
|
||||
⬜⬜🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥⬜⬜
|
||||
⬜⬜⬜🔥🔥🔥🔥🔥🔥🔥🔥🔥⬜⬜⬜
|
||||
⬜⬜⬜⬜🔥🔥🔥🔥🔥🔥🔥⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜🔥🔥🔥🔥🔥⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜⬜🔥🔥🔥⬜⬜⬜⬜⬜⬜
|
||||
⬜⬜⬜⬜⬜⬜⬜🔥⬜⬜⬜⬜⬜⬜⬜`,
|
||||
},
|
||||
];
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* @copyright nhcarrigan
|
||||
* @license Naomi's Public License
|
||||
* @author Naomi Carrigan
|
||||
*/
|
||||
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { anime } from "../src/assets/anime.js";
|
||||
import { cats } from "../src/assets/cats.js";
|
||||
import { emoji } from "../src/assets/emoji.js";
|
||||
|
||||
const uniqueAnime = new Set(anime.map((art) => {
|
||||
return art.text;
|
||||
}));
|
||||
const uniqueCats = new Set(cats.map((art) => {
|
||||
return art.text;
|
||||
}));
|
||||
const uniqueEmoji = new Set(emoji.map((art) => {
|
||||
return art.text;
|
||||
}));
|
||||
|
||||
describe("assets", () => {
|
||||
it("anime should be unique", () => {
|
||||
expect.assertions(1);
|
||||
expect(uniqueAnime.size, "anime has duplicate art").toBe(anime.length);
|
||||
});
|
||||
|
||||
it("cats should be unique", () => {
|
||||
expect.assertions(1);
|
||||
expect(uniqueCats.size, "cats has duplicate art").toBe(cats.length);
|
||||
});
|
||||
|
||||
it("emoji should be unique", () => {
|
||||
expect.assertions(1);
|
||||
expect(uniqueEmoji.size, "emoji has duplicate art").toBe(emoji.length);
|
||||
});
|
||||
});
|
||||
+2
-1
@@ -3,5 +3,6 @@
|
||||
"compilerOptions": {
|
||||
"rootDir": "./src",
|
||||
"outDir": "./prod"
|
||||
}
|
||||
},
|
||||
"exclude": ["test", "vitest.config.ts"]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* @copyright nhcarrigan
|
||||
* @license Naomi's Public License
|
||||
* @author Naomi Carrigan
|
||||
*/
|
||||
|
||||
|
||||
import { defineConfig } from "vitest/config";
|
||||
|
||||
export default defineConfig({});
|
||||
Reference in New Issue
Block a user