Giter Site home page Giter Site logo

serenityos / discord-bot Goto Github PK

View Code? Open in Web Editor NEW
31.0 31.0 25.0 1.29 MB

Discord Bot for the Serenity Operating System Community 🐞

License: BSD 2-Clause "Simplified" License

TypeScript 99.98% Procfile 0.02%
bot discord-bot hacktoberfest serenity

discord-bot's People

Contributors

awesomekling avatar benwiederhake avatar bertaland avatar bgianfo avatar commandmc avatar davidot avatar dependabot[bot] avatar dexesttp avatar filiphsps avatar gunnarbeutner avatar huttongrabiel avatar idanho avatar kleinesfilmroellchen avatar leap0x7b avatar linusg avatar lubrsi avatar mattco98 avatar mrkct avatar networkexception avatar possiblyashrub avatar sin-ack avatar trflynn89 avatar u9g avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

discord-bot's Issues

Heroku Deployment: We should throttle deployment on our side.

We should have ideally fix the deployment action workflow so it has some time buffer between actions, so we can avoid getting throttled by the Heroku free plan :)
See: https://github.com/SerenityOS/discord-bot/actions/runs/786706492

Error: Command failed: git push heroku HEAD:refs/heads/main --force
remote: Compressing source files... done.        
remote: Building source:        
remote: 
remote: !	Your account has reached its concurrent builds limit        
remote: 
To https://git.heroku.com/***.git
 ! [remote rejected] HEAD -> main (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/***.git'

Maybe there is a way to add re-tries as well.

Use lf endings

When running prettier on the project, all files show as changed since they use crlf endings, so it would be better if all files just used lf, so this problem didn't exist

Util: Emojis do not work in private message channels

Currently the helper functions for retrieving emoji rely on the message being sent in the Serenity guild.

Would it be to specify the guild in a config variable? Then a rewrite of the emoji utilities could cache and fetch emojis from the specified guild and use them everywhere.

When asking the bot for a non-existent issue, it responds with the last queried issue

When asking the bot to post the link to a non-existent issue via !issue, it will respond (given that the issue number format is technically correct) with the last existent issue you asked for. I tried this with the following conversation (https://discord.com/channels/830522505605283862/830721144674844703/836268667339669534):

# kleines Filmröllchen, Piano/DAW
!issue 6666
# Buggie
https://github.com/SerenityOS/serenity/issues/6666
# kleines Filmröllchen, Piano/DAW
!issue 6663
# Buggie
https://github.com/SerenityOS/serenity/issues/6666
# kleines Filmröllchen, Piano/DAW
!issue 6665
# Buggie
https://github.com/SerenityOS/serenity/issues/6665

This may only happen if the non-existent issue is a Pull Request instead.

test262 command fails when commit author has no GitHub account

Example commit: SerenityOS/serenity@f55d7bf
This is a patch from Anonymous, which doesn't have a GitHub account. Calling /test262 with this commit causes the bot to fail with: Cannot read properties of null (reading 'login').

The bug is here:

.setAuthor(`@${commit.author.login}`, commit.author.avatar_url, commit.author.html_url)

A null check needs to be added in case the commit author doesn't have a GitHub account.

Quote Command Is Broken

In summary, it looks like somehow commit 37f927c actually broke the bot more, than fixing anything.

@IdanHo Noticed that this is probably because of the implementation of valueToTreeObject in the octokit-plugin-create-pull-request package, where they check if it's a string, and if it isn't they give up parsing it and send the contents to the github blobs API instead.

https://github.com/gr2m/octokit-plugin-create-pull-request/blob/682ea7b47c16ce2b13bc07b09d201ea30381770b/src/value-to-tree-object.ts#L28

export async function valueToTreeObject(
  octokit: Octokit,
  owner: string,
  repo: string,
  path: string,
  value: string | File
) {
  let mode = "100644";
  if (value !== null && typeof value !== "string") {
    mode = value.mode || mode;
  }

  // Text files can be changed through the .content key
  if (typeof value === "string") {
    return {
      path,
      mode: mode,
      content: value,
    };
  }

  // Binary files need to be created first using the git blob API,
  // then changed by referencing in the .sha key
  const { data } = await octokit.request(
    "POST /repos/{owner}/{repo}/git/blobs",
    {
      owner,
      repo,
      ...value,
    }
  );
  const blobSha = data.sha;

  return {
    path,
    mode: mode,
    sha: blobSha,
  };
}

Link to the conversation on Discord

Chat Logs from discussing issue...
BertalanD — 01/17/2022
TIL /quote doesn't work anymore

Filmröllchen, Sampler of Audio — 01/17/2022
I'm honored nonetheless

IdanHo — 01/17/2022
it should :thonk:

Lubrsi — 01/17/2022
I think only mods can use it

IdanHo — 01/17/2022
When I originally added it I made it 100+ club

Filmröllchen, Sampler of Audio — 01/17/2022
I see an "application did not respond" message


IdanHo — 01/17/2022
Ah, that would probably just be a bug :caret: 

bgianf — 01/17/2022
I looked at the logs this was all that was in there: 
	2022-01-17T06:35:25.605612+00:00 app[worker.1]: Logged in as Buggie#5639.

	2022-01-17T07:09:03.602553+00:00 app[worker.1]: (node:54) DeprecationWarning: Passing strings for MessageEmbed#setAuthor is deprecated. Pass a sole object instead.

	2022-01-17T07:09:03.602561+00:00 app[worker.1]: (Use `node --trace-deprecation ...` to show where the warning was created)

	2022-01-17T14:53:53.636168+00:00 app[worker.1]: (node:54) DeprecationWarning: Passing strings for MessageEmbed#setFooter is deprecated. Pass a sole object instead.

doesn't seem related

IdanHo — 01/17/2022
Yeah it isn't

bgianf — 01/17/2022
I thought I had added tracing all the places where quote could fail
but... guess not

IdanHo — 01/17/2022
Yeah, there are a bunch of console.traces in the code
It's getting pretty late, so I'll try looking into it tomorrow

bgianf — 01/17/2022
Well that generated some logs

IdanHo — 01/17/2022
hmm, this API does exist though https://docs.github.com/en/rest/reference/git#blobs
@bgianf oh wait
that is trying to create the blob on the main repo
not on it's fork 🤔

bgianf — 01/17/2022
hrmm.. didn't it always work that way though?

IdanHo — 01/17/2022
I mean, how could it? the bot doesn't have access to the repo

bgianf — 01/17/2022
hrm... maybe it's like the GUI editor in the github web UI? where it does it transparently?

IdanHo — 01/17/2022
hmm possibly, there's also a different status code (403) for no access
404 is just for resource not found
as in, it thinks the repo doesn't exist
ooooh
the fortunes file was moved :)
no wait nvm, I'm just bad at writing cd commands 🤔
oh hmm
the library only uses that endpoint if it thinks the data were writing is binary and not text
which it obviously is not

bgianf — 01/17/2022
Maybe this caused more harm than good? 
commit 37f927cc0c266d41007be6494f0ee4faa4b351fb
Author: Brian Gianforcaro <[email protected]>
Date:   Thu Sep 2 16:44:46 2021 -0700

    Commands: Fix text encoding of the /quote command

    Because the quote command was encoding the fortunes.json file as
    binary when it received it from the API it was mangling the utf-8
    characters in the file when it it wrote it back when creating the
    pull request.

    Fix this by always using utf-8 encoding.
or maybe I didn't fix it all the way?

IdanHo — 01/17/2022
where's that commit?
I can't find it

bgianf — 01/17/2022
https://github.com/SerenityOS/discord-bot/commit/37f927cc0c266d41007be6494f0ee4faa4b351fb#diff-a81c635edbe9fc8c78e8ce1c8b66c9a22f7f6573c4ba2f85a3b122f49c02a483

IdanHo — 01/17/2022
I kept pulling from my fork instead of the main repo 🤦‍♂️

bgianf — 01/17/2022
maybe it is time for :sleepyak:

IdanHo — 01/17/2022
Yeah probably 😅
But yep, that change indeed triggers their condition
it just checks if it's a string, and if it isn't it gives up parsing it and sends it to the blobs api

bgianf — 01/17/2022
that code is in octokit-plugin-create-pull-request?
IdanHo — 01/17/2022
right
Logs from a failed quote invocation...
2022-01-17T23:16:19.388381+00:00 app[worker.1]: Trace: matchedCommand.handleContextMenu failed RequestError [HttpError]: Not Found

2022-01-17T23:16:19.388389+00:00 app[worker.1]:     at /app/node_modules/@octokit/request/dist-node/index.js:86:21

2022-01-17T23:16:19.388390+00:00 app[worker.1]:     at runMicrotasks (<anonymous>)

2022-01-17T23:16:19.388391+00:00 app[worker.1]:     at processTicksAndRejections (node:internal/process/task_queues:96:5)

2022-01-17T23:16:19.388392+00:00 app[worker.1]:     at async valueToTreeObject (/app/node_modules/octokit-plugin-create-pull-request/dist-node/index.js:74:7)

2022-01-17T23:16:19.388392+00:00 app[worker.1]:     at async Promise.all (index 0)

2022-01-17T23:16:19.388392+00:00 app[worker.1]:     at async createTree (/app/node_modules/octokit-plugin-create-pull-request/dist-node/index.js:95:17)

2022-01-17T23:16:19.388393+00:00 app[worker.1]:     at async composeCreatePullRequest (/app/node_modules/octokit-plugin-create-pull-request/dist-node/index.js:269:35)

2022-01-17T23:16:19.388394+00:00 app[worker.1]:     at async GithubAPI.openFortunesPullRequest (/app/build/apis/githubAPI.js:114:24)

2022-01-17T23:16:19.388394+00:00 app[worker.1]:     at async QuoteCommand.handleCommand (/app/build/commands/quoteCommand.js:75:35)

2022-01-17T23:16:19.388395+00:00 app[worker.1]:     at async CommandHandler.callInteractionHandler (/app/build/commandHandler.js:105:9) {

2022-01-17T23:16:19.388395+00:00 app[worker.1]:   status: 404,

2022-01-17T23:16:19.388396+00:00 app[worker.1]:   response: {

2022-01-17T23:16:19.388396+00:00 app[worker.1]:     url: 'https://api.github.com/repos/SerenityOS/serenity/git/blobs',

2022-01-17T23:16:19.388397+00:00 app[worker.1]:     status: 404,

2022-01-17T23:16:19.388397+00:00 app[worker.1]:     headers: {

2022-01-17T23:16:19.388397+00:00 app[worker.1]:       'access-control-allow-origin': '*',

2022-01-17T23:16:19.388399+00:00 app[worker.1]:       'access-control-expose-headers': 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset',

2022-01-17T23:16:19.388399+00:00 app[worker.1]:       connection: 'close',

2022-01-17T23:16:19.388400+00:00 app[worker.1]:       'content-encoding': 'gzip',

2022-01-17T23:16:19.388400+00:00 app[worker.1]:       'content-security-policy': "default-src 'none'",

2022-01-17T23:16:19.388401+00:00 app[worker.1]:       'content-type': 'application/json; charset=utf-8',

2022-01-17T23:16:19.388401+00:00 app[worker.1]:       date: 'Mon, 17 Jan 2022 23:16:19 GMT',

2022-01-17T23:16:19.388402+00:00 app[worker.1]:       'referrer-policy': 'origin-when-cross-origin, strict-origin-when-cross-origin',

2022-01-17T23:16:19.388402+00:00 app[worker.1]:       server: 'GitHub.com',

2022-01-17T23:16:19.388402+00:00 app[worker.1]:       'strict-transport-security': 'max-age=31536000; includeSubdomains; preload',

2022-01-17T23:16:19.388403+00:00 app[worker.1]:       'transfer-encoding': 'chunked',

2022-01-17T23:16:19.388403+00:00 app[worker.1]:       vary: 'Accept-Encoding, Accept, X-Requested-With',

2022-01-17T23:16:19.388403+00:00 app[worker.1]:       'x-accepted-oauth-scopes': '',

2022-01-17T23:16:19.388403+00:00 app[worker.1]:       'x-content-type-options': 'nosniff',

2022-01-17T23:16:19.388404+00:00 app[worker.1]:       'x-frame-options': 'deny',

2022-01-17T23:16:19.388404+00:00 app[worker.1]:       'x-github-media-type': 'github.v3; format=json',

2022-01-17T23:16:19.388405+00:00 app[worker.1]:       'x-github-request-id': 'C8F2:4605:54EB5C:E8BE43:61E5F8C3',

2022-01-17T23:16:19.388405+00:00 app[worker.1]:       'x-oauth-scopes': 'repo',

2022-01-17T23:16:19.388406+00:00 app[worker.1]:       'x-ratelimit-limit': '5000',

2022-01-17T23:16:19.388406+00:00 app[worker.1]:       'x-ratelimit-remaining': '4993',

2022-01-17T23:16:19.388406+00:00 app[worker.1]:       'x-ratelimit-reset': '1642464978',

2022-01-17T23:16:19.388406+00:00 app[worker.1]:       'x-ratelimit-resource': 'core',

2022-01-17T23:16:19.388407+00:00 app[worker.1]:       'x-ratelimit-used': '7',

2022-01-17T23:16:19.388407+00:00 app[worker.1]:       'x-xss-protection': '0'

2022-01-17T23:16:19.388407+00:00 app[worker.1]:     },

2022-01-17T23:16:19.388407+00:00 app[worker.1]:     data: {

2022-01-17T23:16:19.388407+00:00 app[worker.1]:       message: 'Not Found',

2022-01-17T23:16:19.388408+00:00 app[worker.1]:       documentation_url: 'https://docs.github.com/rest/reference/git#create-a-blob'

2022-01-17T23:16:19.388408+00:00 app[worker.1]:     }

2022-01-17T23:16:19.388408+00:00 app[worker.1]:   },

2022-01-17T23:16:19.388408+00:00 app[worker.1]:   request: {

2022-01-17T23:16:19.388409+00:00 app[worker.1]:     method: 'POST',

2022-01-17T23:16:19.388409+00:00 app[worker.1]:     url: 'https://api.github.com/repos/SerenityOS/serenity/git/blobs',

2022-01-17T23:16:19.388409+00:00 app[worker.1]:     headers: {

2022-01-17T23:16:19.388410+00:00 app[worker.1]:       accept: 'application/vnd.github.v3+json',

2022-01-17T23:16:19.388410+00:00 app[worker.1]:       'user-agent': 'BuggieBot octokit-rest.js/18.12.0 octokit-core.js/3.5.1 Node.js/17.3.1 (linux; x64)',

2022-01-17T23:16:19.388410+00:00 app[worker.1]:       authorization: 'token [REDACTED]',

2022-01-17T23:16:19.388411+00:00 app[worker.1]:       'content-type': 'application/json; charset=utf-8'

2022-01-17T23:16:19.388411+00:00 app[worker.1]:     },

2022-01-17T23:16:19.388438+00:00 app[worker.1]:     body: `{"content":"[\\n  {\\n    \\"quote\\": \\"add some quotes, problem solved?\\",\\n    \\"author\\": \\"linusg\\",\\n    \\"utc_time\\": 1596660175,\\n    \\"url\\": \\"https://freenode.logbot.info/serenityos/20200805#c4651652\\",\\n    \\"context\\": \\"About a different kind of quote, but that's good enough for me! :)\\"\\n  },\\n  {\\n    \\"quote\\": \\"BenW: i'm sure it's fine lol\\",\\n    \\"author\\": \\"kling\\",\\n    \\"utc_time\\": 1605364559,\\n    \\"url\\": \\"https://freenode.logbot.info/serenityos/20201114#c5825428\\"\\n  },\\n  {\\n    \\"quote\\": \\"dammit fuzzer, what madman would write '?~x/'?\\",\\n    \\"author\\": \\"CxByte\\",\\n    \\"utc_time\\": 1606653374,\\n    \\"url\\": \\"https://freenode.logbot.info/serenityos/20201129#c5999293\\",\\n    \\"context\\": \\"Fuzzers are even worse than users.\\"\\n  },\\n  {\\n    \\"quote\\": \\"I'd totally implement that\\",\\n    \\"author\\": \\"nooga\\",\\n    \\"utc_time\\": 1611335335,\\n    \\"url\\": \\"https://freenode.logbot.info/serenityos/20210122#c6624263\\"\\n  },\\n  {\\n    \\"quote\\": \\"No need to dereference the nullptr!\\",\\n    \\"author\\": \\"linusg\\",\\n    \\"utc_time\\": 1612014120,\\n    \\"url\\": \\"https://github.com/SerenityOS/serenity/commit/5b43419a636699d71752de7cec91f6eb35ed50b5\\"\\n  },\\n  {\\n    \\"quote\\": \\"We can't not have the quotes under VC, that's a sin\\",\\n    \\"author\\": \\"CxByte\\",\\n    \\"utc_time\\": 1612035713,\\n    \\"url\\": \\"https://freenode.logbot.info/serenityos/20210130#c6726388\\",\\n    \\"context\\": \\"A quote about putting quotes in VC, in VC.\\"\\n  },\\n  {\\n    \\"quote\\": \\"\\\\\\"We really should start a \\\\\\\\\\\\\\"Quotes\\\\\\\\\\\\\\" page.\\\\\\" - BenW\\",\\n    \\"author\\": \\"kling\\",\\n    \\"utc_time\\": 1612900961,\\n    \\"url\\": \\"https://freenode.logbot.info/serenityos/20210209#c6854420\\",\\n    \\"context\\": \\"Apparently I said that once too often.\\"\\n  },\\n  {\\n    \\"quote\\": \\"if your port uses textrels, it likely uses other things that we don't want near serenity\\",\\n    \\"author\\": \\"thakis\\",\\n    \\"utc_time\\": 1612900918,\\n    \\"url\\": \\"https://freenode.logbot.info/serenityos/20210209#c6854410\\",\\n    \\"context\\": \\"\\\\\\"jk but only a little bit jk\\\\\\"\\"\\n  },\\n  {\\n    \\"quote\\": \\"I'm afraid of where pulling that string will take me.\\",\\n    \\"author\\": \\"boricj\\",\\n    \\"utc_time\\": 1612954860,\\n    \\"url\\": \\"https://freenode.logbot.info/serenityos/20210210#c6866141\\",\\n    \\"context\\": \\"C++ templates will lead you down the rabbithole.\\"\\n  },\\n  {\\n    \\"quote\\": \\"$commitdescription ($user opened: The build failed.)\\",\\n    \\"author\\": \\"SerenityBot\\",\\n    \\"utc_time\\": 1613906220,\\n    \\"url\\": \\"https://freenode.logbot.info/serenityos/20210221#c6989891\\",\\n    \\"context\\": \\"The IRC notifications are a little bit harsh sometimes, especially if they all seem to spell failure.\\"\\n  },\\n  {\\n    \\"quote\\": \\"There cannot be more unused bits than the entirety of the input.\\",\\n    \\"author\\": \\"CxByte\\",\\n    \\"utc_time\\": 1615188240,\\n    \\"url\\": \\"https://github.com/SerenityOS/serenity/pull/5692#issue-586526857\\"\\n  },\\n  {\\n    \\"quote\\": \\"Does your code contain unexpected integer overflow? of course it does! contact BenW to find out why!\\",\\n    \\"author\\": \\"CxByte\\",\\n    \\"utc_time\\": 1615228585,\\n    \\"url\\": \\"https://freenode.logbot.info/serenityos/20210308#c7177736\\",\\n    \\"context\\": \\"Overflow-correct code is deviously hard. https://github.com/SerenityOS/serenity/commit/183b2e71ba8d85293db493cab27b8adb4af54981\\"\\n  },\\n  {\\n    \\"quote\\": \\"clang-format formatted your JSON file? Call Brian at [email protected] today! *Terms and conditions apply\\",\\n    \\"author\\": \\"Andrew Kaster\\",\\n    \\"utc_time\\": 1619133730,\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/830739873119207426/834932114125488149\\"\\n  },\\n  {\\n    \\"quote\\": \\"we started with dialup and \\\\\\"web 2.0\\\\\\" and ended up with touchscreen smartphones sucking broadband out of thin air\\",\\n    \\"author\\": \\"nooga\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/830525235803586570/864277610510549002\\",\\n    \\"utc_time\\": 1626130562\\n  },\\n  {\\n    \\"quote\\": \\"1.28 GiB worth of hash table is a lot of hash table\\",\\n    \\"author\\": \\"awesomekling\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/830739873119207426/870071227929202738\\",\\n    \\"utc_time\\": 1627511606\\n  },\\n  {\\n    \\"quote\\": \\"Changelog: All boogs fixed, thar be no moar boogs\\",\\n    \\"author\\": \\"CxByte\\",\\n    \\"utc_time\\": \\"1627859603\\",\\n    \\"url\\": \\"https://github.com/SerenityOS/serenity/pull/9127#issuecomment-890603297\\"\\n  },\\n  {\\n    \\"quote\\": \\"i'm here to influencer-marknadsföring and mjukvaruutveckling, and i'm all done utveckling the mjukvaru\\",\\n    \\"author\\": \\"thakis\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/859531354219872266/877267999940292660\\",\\n    \\"utc_time\\": 1629242612\\n  },\\n  {\\n    \\"quote\\": \\"\\\\\\"Is there an ISO of Serenity?\\\\\\" – \\\\\\"No, because they charge money, and because it's not a spec.\\\\\\" – \\\\\\"… what?!\\\\\\"\\",\\n    \\"author\\": \\"BenW\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/859531354219872266/889222244218327130\\",\\n    \\"utc_time\\": 1632077460\\n  },\\n  {\\n    \\"quote\\": \\"You reached the end of the internet, turn around\\",\\n    \\"author\\": \\"Hendiadyoin\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/830525031720943627/876969458432884766\\",\\n    \\"utc_time\\": 1629156212,\\n    \\"context\\": \\"An interesting Browser bug. https://discord.com/channels/830522505605283862/830525031720943627/876966237077389352\\"\\n  },\\n  {\\n    \\"quote\\": \\"Widgets all inherit from Object, which has the methods for dealing with children\\",\\n    \\"author\\": \\"AtkinsSJ\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/830529037251641374/882936925739171881\\",\\n    \\"utc_time\\": 1630578967\\n  },\\n  {\\n    \\"quote\\": \\"slaps roof of PR queue\\\\nThis baby can hold so many e̴̾̓l̷͑͑d̸̉̚r̵̅͂ï̷̀t̸͗̉c̵̾͝h̶̋͗ ̸̲̚h̸͒́ȱ̸r̶̛̄ȓ̶͌o̶͐͘r̴̲͝s̴̐͆\\",\\n    \\"author\\": \\"Andrew Kaster\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/830525235803586570/922976701032562738\\",\\n    \\"utc_time\\": 1640125193\\n  },\\n  {\\n    \\"quote\\": \\"Do you like bugs? yeah, me neither, so I fixed one:\\",\\n    \\"author\\": \\"linusg\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/859531354219872266/922965066423341066\\",\\n    \\"utc_time\\": 1640122419\\n  },\\n  {\\n    \\"quote\\": \\"why is german\\",\\n    \\"author\\": \\"Agni\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/830525235803586570/917781310766993408\\",\\n    \\"utc_time\\": 1638886516\\n  },\\n  {\\n    \\"quote\\": \\"> Lasciate ogni speranza, voi ch'entrate!\\\\n> Abandon hope all ye who enter here\\\\n~ Dante\\",\\n    \\"author\\": \\"Hendiadyoin\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/830522505605283866/917781369084596284\\",\\n    \\"utc_time\\": 1638886529,\\n    \\"context\\": \\"Multithreaded IPC. https://discord.com/channels/830522505605283862/830522505605283866/917780454298484806\\"\\n  },\\n  {\\n    \\"quote\\": \\"yakcoin is powered by proof of commits\\\\neverytime you shave a yak you earn one yakcoin\\",\\n    \\"author\\": \\"Agni\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/830525235803586570/849632952089837599\\",\\n    \\"utc_time\\": 1622638681\\n  },\\n  {\\n    \\"quote\\": \\"tootlips\\",\\n    \\"author\\": \\"awesomekling\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/830739873119207426/895421091856666685\\",\\n    \\"utc_time\\": 1633555424,\\n    \\"context\\": \\"https://discord.com/channels/830522505605283862/830739873119207426/895421023833436160\\"\\n  },\\n  {\\n    \\"quote\\": \\"and then the firebug nation attacked\\",\\n    \\"author\\": \\"gggggg\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/830525031720943627/893862331312902166\\",\\n    \\"utc_time\\": 1633183786\\n  },\\n  {\\n    \\"quote\\": \\"those are some hefty meatballs\\",\\n    \\"author\\": \\"awesomekling\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/830739873119207426/882756655018803311\\",\\n    \\"utc_time\\": 1630535987\\n  },\\n  {\\n    \\"quote\\": \\"not a shell boog this time\\",\\n    \\"author\\": \\"Agni\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/859531354219872266/882660065474146304\\",\\n    \\"utc_time\\": 1630512958\\n  },\\n  {\\n    \\"quote\\": \\"Our Yak, thou art in the fields. Yakked be thy name (I'll stop now)\\",\\n    \\"author\\": \\"Filmröllchen, Sampler of Audio\\",\\n    \\"url\\": \\"https://discord.com/channels/830522505605283862/830525093905170492/932765051859927112\\",\\n    \\"utc_time\\": 1642461378\\n  }\\n]\\n","encoding":"utf-8"}`,

2022-01-17T23:16:19.388439+00:00 app[worker.1]:     request: { hook: [Function: bound bound register] }

2022-01-17T23:16:19.388439+00:00 app[worker.1]:   }

2022-01-17T23:16:19.388439+00:00 app[worker.1]: }

2022-01-17T23:16:19.388439+00:00 app[worker.1]:     at /app/build/commandHandler.js:106:21

2022-01-17T23:16:19.388440+00:00 app[worker.1]:     at runMicrotasks (<anonymous>)

2022-01-17T23:16:19.388440+00:00 app[worker.1]:     at processTicksAndRejections (node:internal/process/task_queues:96:5)

2022-01-17T23:16:19.388440+00:00 app[worker.1]:     at async CommandHandler.callInteractionHandler (/app/build/commandHandler.js:105:9)

Deployment fails with node v18.18.0

See 3c5e0ab

Node v18.18.0 includes an update to npm 9.7.2:
nodejs/node@4a6177d

That update removes the node-gyp executable. Without it, we get the following error when deploying the Heroku app:

Failed to auto-install node-gyp. Please run "yarn global add node-gyp" manually.

I'm not sure how do to the recommended step because this runs remotely in Heroku's servers (i.e. I don't think adding it as a step in the GitHub workflow will suffice).

For now, this has been worked around by limiting node to v18.17.1.

Debug outputting failing

I tried to run the bot locally but ran into the issue that BigInt cannot be serialized in json.
Error: TypeError: Do not know how to serialize a BigInt.
Which is seemingly from memberPermissions being a BigInt.

I fixed it with this but I'm unsure if this is something that I did wrong perhaps:

diff --git a/src/commandHandler.ts b/src/commandHandler.ts
index 2295dd7..f18f0cf 100644
--- a/src/commandHandler.ts
+++ b/src/commandHandler.ts
@@ -78,7 +78,7 @@ export default class CommandHandler {
     /** Executes user commands contained in a message if appropriate. */
     async handleBaseCommandInteraction(interaction: BaseCommandInteraction): Promise<void> {
         if (!this.production) {
-            const msg = `Buggie bot received '${JSON.stringify(interaction)}' from ${
+            const msg = `Buggie bot received '${JSON.stringify(interaction, (_, v) => typeof v === 'bigint' ? v.toString() + 'n' : v)}' from ${
                 interaction.user.tag
             }`;
             await interaction.channel?.send(msg);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.