Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
168 commits
Select commit Hold shift + click to select a range
f4c38a0
Adds Latest Fixes from sfreeman422/mocker (#1)
Jun 15, 2019
37c7f3e
Remove Try Catch from `muzzle-routes` (#2)
Jun 18, 2019
8af9204
Update issue templates
Jun 25, 2019
2097e37
Blocked any @ message and added some light tests (#9)
Jun 29, 2019
89d5c64
Feature/fix @channels (#10)
Jun 29, 2019
a59afb4
Feature/fix gif (#11)
Jun 29, 2019
780e3e3
Feature/retry deletion (#12)
Jun 29, 2019
52ea59e
Bug/fix gif blocking (#13)
Jun 29, 2019
a40362c
Refactor/muzzle (#14)
Jun 29, 2019
512bd1c
Added better logging (#15)
Jun 29, 2019
5ad6601
Removed id from response (#16)
Jun 29, 2019
7a6fd5c
Feature/increase muzzle when channel (#18)
Jun 30, 2019
2679537
Block all Bots from Muzzled Users (#19)
Jun 30, 2019
2bf4eff
Added fix for channel tags (#20)
Jul 2, 2019
5cfcd50
Added fix for containsTag import (#21)
Jul 2, 2019
f80f992
Feature/add data (#22)
Jul 5, 2019
411479f
Clean up code and comments (#24)
Jul 5, 2019
ca9c921
Convert to Singleton Service Architecture (#25)
Jul 7, 2019
35170ea
Improved Tests (#26)
Jul 7, 2019
39b5c99
Fixed vulnerable npm packages (#27)
Jul 13, 2019
8318cd9
Feature/report (#28)
Jul 15, 2019
6af0c6d
Feature/fix formatting (#29)
Jul 16, 2019
b5a068e
added support for clapper, related tests and validation in controller…
Jul 22, 2019
5ec4444
Feature/report service (#31)
Jul 22, 2019
d24804c
added clapController to index (#32)
Jul 22, 2019
04e573b
Add KDR Report (#34)
Jul 27, 2019
3e8b3a3
Feature/time based reporting (#35)
Aug 7, 2019
5612309
Feature/confessions (#36)
Aug 7, 2019
6dc8a05
Feature/the list (#37)
Aug 9, 2019
420673c
Remove daily report (#40)
Aug 10, 2019
cedc184
Fixed urban dictionary multi-word definitions (#41)
Aug 22, 2019
8b3166c
Feature/list enhancements (#42)
Aug 22, 2019
9295f57
Removed (#43)
Aug 22, 2019
56a3230
Feature/remove unintentional list counter (#44)
Aug 22, 2019
a032235
Converted weeks and months to only report on the previous week/month …
Aug 22, 2019
5f6fd55
Trailing30 (#46)
Aug 22, 2019
77de687
Added fix to avoid text.like.this from not being muzzled (#47)
Sep 23, 2019
8df7cc1
fixed bug in which adding a user to a channel increases tbeir muzzle …
Sep 25, 2019
bffa33a
Fixed a bug in which a user could get stats while they were muzzled (…
Oct 14, 2019
2eb5199
Fixed spelling in the success message (#50)
Oct 14, 2019
439b974
Cleaned up logging (#51)
Oct 14, 2019
94bb379
Feature/cli (#52)
Oct 24, 2019
25b6ec7
Fixed a bug in which KDR calculated for all time reports was using at…
sfreeman422 Oct 31, 2019
d0b0d3d
Backfire Feature (#54)
sfreeman422 Nov 27, 2019
add737f
Fixed undefined error and upped percentage to 5% per muzzle (#55)
sfreeman422 Dec 7, 2019
0a56788
Backfire alerts fire immediately now and users are aware of their bac…
sfreeman422 Dec 10, 2019
83eea34
Refactor Muzzle Service and Muzzle Persistence Service (#58)
sfreeman422 Dec 19, 2019
9e3ca56
Muzzle Spacing (#59)
sfreeman422 Dec 19, 2019
cb04b73
Added support for bolded text when sent through (#60)
sfreeman422 Dec 19, 2019
55fb8ba
Added support for refreshing the local cache of users when a new user…
sfreeman422 Jan 3, 2020
adcfd03
Add Counter (#62)
sfreeman422 Jan 5, 2020
0689f81
Added logging to monitor how long it takes an event to be responded t…
sfreeman422 Jan 5, 2020
56a6b3d
Added sensible time display for counter (#64)
sfreeman422 Jan 5, 2020
58a3303
Fix Expire Message and Other Counter Bugs (#65)
sfreeman422 Jan 5, 2020
dbf54a8
Fix an issue where a user is not muzzled for changing topic nor for u…
sfreeman422 Jan 7, 2020
5a3a253
Feature/add rep (#67)
sfreeman422 Jan 24, 2020
fe45693
Fixed handler for backfire and counter when someone changes channel t…
sfreeman422 Jan 29, 2020
ffef26a
Setup cicd (#69)
sfreeman422 Feb 1, 2020
650d23f
Rep Checking (#70)
sfreeman422 Feb 1, 2020
c13fdf9
Fixed typo (#71)
sfreeman422 Feb 1, 2020
9bada7b
Add Per User Rep (#72)
sfreeman422 Feb 6, 2020
7153780
Chart first, rep last (#73)
sfreeman422 Feb 6, 2020
c76111a
Removed more than one word requirement and added an extra clap and up…
sfreeman422 Feb 19, 2020
e60f699
Feature/add walkie (#75)
sfreeman422 Mar 20, 2020
5c505f2
Feature/add better walkie (#76)
sfreeman422 Mar 21, 2020
4ff822b
Fixed callsign (#77)
sfreeman422 Mar 21, 2020
01a1666
Changed neals callsign fr
Mar 21, 2020
c42b6f7
Changed milau
Mar 21, 2020
ca45e5a
Added fix for non-existent callsigns
Mar 21, 2020
f465b59
Added support for missing nato call signs
Mar 21, 2020
f637e48
Added random chance of coughing (#78)
sfreeman422 Mar 22, 2020
7e0879d
removed bold
Mar 22, 2020
d7d4991
Removed capitalize first letter for definition
Mar 27, 2020
17cc46a
Fix/define (#79)
sfreeman422 Mar 27, 2020
fd56844
Added optional capitalization
Mar 27, 2020
df85ce8
added trim to clapper (#80)
sfreeman422 Apr 14, 2020
b1dabb4
Fix/use eslint (#82)
sfreeman422 Apr 30, 2020
77937ab
Added oof (#83)
sfreeman422 May 11, 2020
8734073
Add DockerFile (#81)
sfreeman422 May 18, 2020
8455403
Fix/nato names (#85)
sfreeman422 May 22, 2020
31e41f9
Add Errors for Stats (#86)
sfreeman422 May 22, 2020
88f294d
Delete Extensions That Use Blocks and Tag Users (#87)
sfreeman422 May 31, 2020
5b71eba
Added USER_ID_REGEX and added shouldBotBeMuzzled to each service (#88)
sfreeman422 May 31, 2020
b5eb94b
Feature/add backfire stats (#89)
sfreeman422 Jun 12, 2020
0d982ed
Removed noisy logs (#90)
sfreeman422 Jun 14, 2020
01abc94
Fixed Define Error Handling (#91)
sfreeman422 Jul 9, 2020
65f4495
Counter Refactor (#92)
sfreeman422 Jul 10, 2020
4e5b034
Added Redis to All Services Except Counter (#93)
sfreeman422 Jul 30, 2020
c6843e6
Fixed counter
sfreeman422 Aug 3, 2020
e8ddc34
Feature/store (#94)
sfreeman422 Aug 27, 2020
67cad62
Fixed backfire percentage calculation (#95)
sfreeman422 Aug 28, 2020
795d941
Added middlware to confirm slack identity (#96)
sfreeman422 Aug 28, 2020
98e5509
Added support for tokens (#97)
sfreeman422 Aug 28, 2020
79199d3
Fixed bad request middle ware logic (#98)
sfreeman422 Sep 9, 2020
320f619
Feature/add rez (#99)
sfreeman422 Sep 15, 2020
2fcb49f
Added fix for 50 cal
sfreeman422 Sep 25, 2020
a6893fa
Fixed issue in which a used GA would consume a muzzle (#100)
sfreeman422 Sep 30, 2020
c6daefa
Feature/store verbiage (#101)
sfreeman422 Sep 30, 2020
27f52c0
Added lib and hurder emoji values (#102)
sfreeman422 Oct 5, 2020
102152b
Fixed the formatting of definitions
sfreeman422 Oct 9, 2020
8214ca1
Added trim to muzzle
sfreeman422 Oct 15, 2020
36a8213
Update confession.controller.ts
sfreeman422 Dec 15, 2020
4548ec0
Changed REPLACEMENT_TEXT to from ...COUGH... to ...MICROSOFT...
sfreeman422 Jun 22, 2021
22f1549
feature/add translation (#104)
sfreeman422 Jun 29, 2021
bd0015f
Feature/reduce number of languages (#105)
sfreeman422 Jun 30, 2021
e1d3c18
Feature/add activity monitor (#103)
sfreeman422 Jul 23, 2021
7dbe42e
feature/add increased backfire (#110)
sfreeman422 Aug 17, 2021
4ddd800
Fixed issue in shouldBotMessageBeMuzzled'
sfreeman422 Aug 18, 2021
af6f26e
Removed ability to muzzle yourself
sfreeman422 Nov 30, 2021
f2cebfe
Feature/backfire confessions (#112)
sfreeman422 Dec 9, 2021
730e21b
Fix/use same muzzle (#113)
sfreeman422 Jan 8, 2022
01b74e9
Feature/add sentiment (#114)
sfreeman422 Jan 8, 2022
5157717
Add Name to Define and Changes to Defintion Structure (#115)
sfreeman422 Jan 28, 2022
5ac24f4
Remove Definition Number (#116)
sfreeman422 Jan 28, 2022
0ba150d
Added script.sh to pricing-job (#117)
sfreeman422 Feb 7, 2022
2ca0535
Fix/retry logic for facts (#118)
sfreeman422 Mar 2, 2022
00026c1
Added support for russian language (#119)
sfreeman422 Mar 2, 2022
240534a
Added print statement to quote
sfreeman422 Apr 21, 2022
59edf83
Added print statement to quote (#120)
sfreeman422 Apr 21, 2022
b6a6a61
Debug quote (#121)
sfreeman422 Apr 26, 2022
b822947
Merge branch 'master' of github.com:dev-chat/mocker
sfreeman422 Apr 27, 2022
b9022f2
Changed fact to quote in markdown
sfreeman422 Apr 27, 2022
44abfa9
Updated script.sh to reflect new instance
sfreeman422 Jul 19, 2022
1a88e5a
added log for whole body
sfreeman422 Aug 17, 2022
fa796d4
generic list (#122)
sfreeman422 Aug 19, 2022
abd6c8b
generic list (#123)
sfreeman422 Aug 26, 2022
5fc5b32
Added default values for suppressed fields on counter
sfreeman422 Aug 30, 2022
3f05598
Added changes to rep to show percentages, changed backfire percentage…
sfreeman422 Sep 7, 2022
1e243bd
Fix for rep calculations
sfreeman422 Sep 7, 2022
fb18c8e
Addded fix for repTotals
sfreeman422 Sep 7, 2022
4bc49ef
Added log
sfreeman422 Sep 7, 2022
c85099f
removed bad improt
sfreeman422 Sep 7, 2022
328078d
Added Number parsing
sfreeman422 Sep 7, 2022
705ce7e
Added charset to list
sfreeman422 Sep 7, 2022
3332d87
Added percentage to reaction report
sfreeman422 Sep 8, 2022
9657a7f
Removed space in percentage for repstats
sfreeman422 Sep 8, 2022
466fdba
Changed removeMuzzlePrivileges to remove for one day
sfreeman422 Sep 8, 2022
35fded7
Added totalRep messaging
sfreeman422 Sep 8, 2022
8d8dc33
Upped the multiplier for backfire percentage
sfreeman422 Sep 15, 2022
44d4c4d
updated verbiage for successful counter
sfreeman422 Oct 12, 2022
adcf423
Automatically delete large bodies of text
sfreeman422 Oct 17, 2022
7d4d923
Added catch handlers to all sendMessage calls to avoid breaking the s…
sfreeman422 Oct 25, 2022
7c23f81
Added check for item in getItem
sfreeman422 Nov 16, 2022
7b410d3
Added isNaN check for getItem
sfreeman422 Nov 16, 2022
471d1e8
Added additional isNaN checks
sfreeman422 Nov 16, 2022
f57c254
Updated controller to handle invalid items
sfreeman422 Nov 16, 2022
e0b7713
Modified backfire chance to be calculated based on rolling 7 days rat…
sfreeman422 Nov 18, 2022
b94881e
Added check for infinity in isValidItem
sfreeman422 Nov 18, 2022
5e322f1
Added logs for shouldBotMessageBeMuzzzled to tighten up handling of b…
sfreeman422 Nov 18, 2022
8f689ae
Moved shouldBotMessageBeMuzzled logs into isBot conditional
sfreeman422 Nov 18, 2022
0532ca9
Modified logs to view spoiler related messages
sfreeman422 Nov 18, 2022
50791ba
Refactor/should bot message be muzzled (#125)
sfreeman422 Dec 2, 2022
00270b5
Feature/add gpt3 (#126)
sfreeman422 Dec 6, 2022
09c2390
Refactor/store (#127)
sfreeman422 Jan 6, 2023
3f63756
Added text.length limitations for ai.controller
sfreeman422 Jan 6, 2023
40a02e5
feature/add trends (#129)
sfreeman422 Apr 19, 2023
19d0671
Idk (#130)
sfreeman422 Apr 26, 2023
719b0cb
feature/jr in the blind (#131)
sfreeman422 Jul 18, 2023
2ec674c
fix/chunking blocks (#132)
sfreeman422 Aug 15, 2023
1fcc186
Updated model to gpt-4
sfreeman422 Sep 22, 2023
a72c353
Fix/chunking (#133)
sfreeman422 Sep 22, 2023
719dd23
Added Dalle-3 and perma-muzzled JP (#134)
sfreeman422 Nov 9, 2023
9e374bb
Self host images (#136)
sfreeman422 Nov 11, 2023
095286b
feature/muzzle on impersonation (#137)
sfreeman422 Nov 25, 2023
c362f47
feature/store history (#138)
sfreeman422 Jan 16, 2024
8072488
upgrade typeorm (#139)
sfreeman422 Jan 28, 2024
6cb1645
Add quote (#140)
sfreeman422 Feb 25, 2024
8455624
Fixed health job
sfreeman422 Feb 25, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
2 changes: 2 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules
npm-debug.log
14 changes: 14 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module.exports = {
parser: '@typescript-eslint/parser', // Specifies the ESLint parser
parserOptions: {
ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features
sourceType: 'module', // Allows for the use of imports
},

extends: [
'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin
'prettier'
],

rules: {},
};
38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]

**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]

**Additional context**
Add any other context about the problem here.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
/node_modules
/dist
/dist
/src/ormconfig.ts
history-upload-job/data
.env
7 changes: 7 additions & 0 deletions .prettierrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module.exports = {
semi: true,
trailingComma: "all",
singleQuote: true,
printWidth: 120,
tabWidth: 2
};
18 changes: 18 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch index.ts",
"type": "node",
"request": "launch",
"runtimeArgs": ["-r", "ts-node/register"],
"args": ["${workspaceFolder}/src/index.ts"]
},
{
"name": "Attach",
"type": "node",
"request": "attach",
"port": 5858
}
]
}
6 changes: 6 additions & 0 deletions DB_ITEM_SEED.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
USE mockerdbdev;

INSERT INTO item(name, description, pricePct, isStackable, isRange, max_active_ms, min_active_ms, isTimeModifier, max_modified_ms, min_modified_ms, isDefensive, isEffect, requiresUser) VALUES("50 Cal Rounds", "Adds an additional two minutes to your randomly generated muzzle time for one hour.", 0.1, true, false, 3600000, 3600000, true, 120000, 120000, false, true, false);
INSERT INTO item(name, description, pricePct, isStackable, isRange, max_active_ms, min_active_ms, isTimeModifier, max_modified_ms, min_modified_ms, isDefensive, isEffect, requiresUser) VALUES("Guardian Angel", "Prevents the user you specify from being muzzled for a random time between 10 minutes and 30 minutes.", 0.20, false, true, 1800000, 600000, false, 0, 0, true, true, true);
INSERT INTO item(name, description, pricePct, isStackable, isRange, max_active_ms, min_active_ms, isTimeModifier, max_modified_ms, min_modified_ms, isDefensive, isEffect, requiresUser) VALUES("Resurrection", "Removes a muzzle from the currently muzzled user you specify.", 0.2, false, false, 0, 0, false, 0, 0, false, false, true);
INSERT INTO item(name, description, pricePct, isStackable, isRange, max_active_ms, min_active_ms, isTimeModifier, max_modified_ms, min_modified_ms, isDefensive, isEffect, requiresUser) VALUES("Moon Token", "Adds one additional Moonbeam query for use whenever you'd like.", 0.6, false, false, 0, 0, false, 0, 0, false, true, false);
199 changes: 199 additions & 0 deletions DB_SEED.sql

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
FROM node:13

WORKDIR /usr/src/mocker
COPY package.json .
RUN npm install --only=prod
COPY . .
RUN npm run build:prod
EXPOSE 3000

CMD ["node", "./dist/index.js"]
11 changes: 11 additions & 0 deletions Pipfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]

[dev-packages]

[requires]
python_version = "3.8"
74 changes: 69 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,72 @@

## Getting Started

1. Clone down repository and `npm install`.
2. Create a new Slack app, copy your bot token and add it to your environment variables as `muzzleBotToken`.
3. Setup `/muzzle` as a slash command as a part of your new slack app.
4. Create `/mock` and `/define` as additional slack commands and route them to your server.
5. Start making fun of your friends!
### Setting Up Your Slack Environment

1. Set up a new slack workspace for development purposes. (https://slack.com/get-started#/create)
2. Go to: https://api.slack.com/apps and click Create New App
3. Choose your newly created workspace as your Development Workspace and click Create App.
4. Configure Ngrok for your newly created bot: https://api.slack.com/tutorials/tunneling-with-ngrok
5. Add your bot oauth token as MUZZLE_BOT_TOKEN and your bot user token as MUZZLE_BOT_USER_TOKEN to your environment variables. Alternatively, you can pass these in as command line arguments.
6. Your app should have the following features per the Slack management web app:

- Slash Commands
- /mock - Request URL: `<ngrokUrl>/mock`
- /define - Request URL: `<ngrokUrl>/define`
- /muzzle - Request URL: `<ngrokUrl>/muzzle`
- /muzzlestats - Request URL: `<ngrokUrl>/muzzle/stats`
- /confess - Request URL: `<ngrokUrl>/confess`
- /list - Request URL: `<ngrokUrl>/list/add`
- /listreport - Request URL: `<ngrokUrl>/list/retrieve`
- /listremove - Request URL: `<ngrokUrl>/list/remove`
- /counter - Request URL: `<ngrokUrl>/counter`
- /repstats - Request URL: `<ngrokUrl>/rep/get`
- /walkie - Request URL: `<ngrokUrl>/walkie`

Each of the slash commands should have `Escape Channels, users and links sent to your app` checked.

- Event Subscriptions

- Request URL: `<ngrokUrl>/muzzle/handle`
- Subscribe to Workspace Events:
- messages.channels
- reaction_added
- reaction_removed
- team_join

- Permissions
- admin
- channels:history
- chat:write:bot
- chat:write:user
- commands
- files:write:user
- groups:history
- reactions:read
- users.profile:read
- users:read

### Setting Up Your MYSQL Instance

1. Be sure to have mysql installed and configured.
2. Create a database called `mockerdbdev`.
3. `mysql -u <user> -p < DB_SEED.sql`
4. You should now have a fully seeded database.

### Running Locally

1. `npm install`
2. Add the following environment variables for typeORM:

```
TYPEORM_CONNECTION: mysql,
TYPEORM_HOST: localhost,
TYPEORM_PORT: 3306,
TYPEORM_USERNAME: <USER-NAME-FOR-MYSQL>,
TYPEORM_PASSWORD: <PASSWORD-FOR-MYSQL>,
TYPEORM_DATABASE: mockerdbdev,
TYPEORM_ENTITIES: /absolute/path/to/mocker/src/shared/db/models/*.ts,
TYPEORM_SYNCHRONIZE: true
```

3. `npm run start`
1 change: 1 addition & 0 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Make pricing based on recent purchases
15 changes: 15 additions & 0 deletions fun-fact-job/Pipfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
mysql-connector-python = "*"
mysql-connector = "*"
requests = "*"
slack-sdk = "*"

[requires]
python_version = "3.8"
128 changes: 128 additions & 0 deletions fun-fact-job/Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions fun-fact-job/create-database.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
CREATE DATABASE fun_fact;
USE fun_fact;
DROP TABLE fact;
CREATE TABLE fact (factId int NOT NULL AUTO_INCREMENT, fact longtext, source VARCHAR(255), PRIMARY KEY(factId));
DROP TABLE joke;
CREATE TABLE joke (jokeId int NOT NULL AUTO_INCREMENT, id VARCHAR(255), PRIMARY KEY(jokeId));
Loading