Skip to content
This repository was archived by the owner on Dec 24, 2021. It is now read-only.
This repository was archived by the owner on Dec 24, 2021. It is now read-only.

Argument type: duration #182

Open
Open
@JohnScience

Description

@JohnScience

The most of Discord bots are expected to provide "mute" and "ban" commands. Their implementation involves juggling with parsing strings just to get so-much-desired duration.

Formats:

"3w 1d 11 [many spaces]h \t30m 20s 5ms"

Methods:

  • duration.toWeeks() -> float
  • duration.toDays() -> float
  • duration.toMinutes() -> float
  • duration.toSeconds() -> float
  • duration.toMilliseconds() -> float

And perhaps a few aliases:

  • duration.toW()
  • duration.toD()
  • duration.toM()
  • duration.toMs()

etc

Activity

greavettey

greavettey commented on Aug 26, 2018

@greavettey

This would make my bot so much cleaner haha!

changed the title [-]Add new argument type: duration[/-] [+]Argument type: duration[/+] on Sep 26, 2018
jonahsnider

jonahsnider commented on Dec 11, 2018

@jonahsnider
Contributor

Would Commando handle parsing a duration itself or use an external package like moment.js or date-fns to handle it?

brandonbothell

brandonbothell commented on Dec 11, 2018

@brandonbothell
Contributor
Gawdl3y

Gawdl3y commented on Dec 11, 2018

@Gawdl3y
Member

I'm not opposed to using moment, since it covers a lot of possible input formats, and handles localisation. The only problem is it doesn't take the "6mo3d4h50m30s" format... which is something that, ideally, would also accept locale-specific suffixes.

MADLAB96

MADLAB96 commented on Mar 28, 2019

@MADLAB96

Hi, I am working on a solution to this but I am having difficulty testing it locally. I'm currently attempting to run the test bot included but receiving this error:

 $ node test/bot.js
/Users/madlab/repos/temp/Commando/src/extensions/message.js:7
module.exports = Structures.extend('Message', Message => {
                            ^

TypeError: Cannot read property 'extend' of undefined
    at Object.<anonymous> (/Users/madlab/repos/temp/Commando/src/extensions/message.js:7:29)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/madlab/repos/temp/Commando/src/registry.js:5:25)
    at Module._compile (module.js:652:30)

This is after a npm install and npm install discord.js. I ran into the same errors with npm link to my own bot locally.

NVM I found #215 and figured it out.

MADLAB96

MADLAB96 commented on Mar 28, 2019

@MADLAB96

Okay I have this mostly done but I can't seem to get the methods working. Just adding them to my DurationArgumentType class doesn't do the trick. I also didn't find any examples of class methods with the rest of the types.

Jazcash

Jazcash commented on Apr 3, 2019

@Jazcash

This is the regex I'm using to parse duration in one of my bots, not sure if it's any help to anybody:

^(?:(?<weeks>\d+)w)?(?:((?<days>\d+)d)?(?:(?<hours>\d+)h)?(?:(?<minutes>\d+)m)?)$

E.g. 2w3d4h15m where any part is optional

jonahsnider

jonahsnider commented on Sep 6, 2019

@jonahsnider
Contributor

I'm not opposed to using moment, since it covers a lot of possible input formats, and handles localisation. The only problem is it doesn't take the "6mo3d4h50m30s" format... which is something that, ideally, would also accept locale-specific suffixes.

Moment supports plugins which you can use to define new formats and date-fns lets you define a pattern for parsing dates.

MagnusHJensen

MagnusHJensen commented on Dec 23, 2020

@MagnusHJensen
Contributor

I'm guessing this was dropped, by people who tried to make it work?
If so, I would like to give it a shot, and see what I can come up with.
#256 (Was this ever implemented?)

sriRacha21

sriRacha21 commented on Jan 29, 2021

@sriRacha21
Contributor

I've given this a shot using code from my own bot (#366). I think this would make a great addition to Commando and would love to see any of the suggested implementations merged!

Nik0lovD

Nik0lovD commented on Sep 25, 2021

@Nik0lovD

I have the same errorhttps://prnt.sc/1tkskl4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @Gawdl3y@Jazcash@jonahsnider@sriRacha21@MADLAB96

        Issue actions

          Argument type: duration · Issue #182 · discordjs/Commando