dreamexposure / discal-discord-bot Goto Github PK
View Code? Open in Web Editor NEWDisCal is a Discord Bot that links up to a Google Calendar to create, delete, edit, and announce events and more!
License: GNU General Public License v3.0
DisCal is a Discord Bot that links up to a Google Calendar to create, delete, edit, and announce events and more!
License: GNU General Public License v3.0
Is your feature request related to a problem? Please describe.
For advanced users it would save time to have the ability to create an event or annoucement with a single long command.
Describe the solution you'd like
!event create [some date] [some time] [some event title]
Describe alternatives you've considered
None
Additional context
Scheduler bot has this functionality: https://github.com/pyrox18/SchedulerBot
Admins setting up the bot
The bot
When creating a calendar
Calendar Creation Wizard
Sporadic. Happens sometimes, other times not.
Calender fails to respond to !cal confirm
Calender should be created
Possibly related to #67
Tickets #1811, #1814, #1824, #1826, #1827 all seem to be examples.
Users trying to edit an all day event on an external calendar via the bot
Bot, potentially the website once event editing is supported.
When attempting to edit an all day event that is on an external calendar, saving the event will fail to save and generate an error.
Event editing wizard
Have an external calendar, attempt to edit an all day event that was created outside of discal. When confirming the changes to the event, it will fail
Event changes should be confirmed
Have to look into this further, but probably because of google sending us bad date/time data and us trying to then send that bad data back to them. Google dumb.
At first... i really like your Bot :)
But for planing raids it will be very nice to allow users to confirm participation to an Event. Do you have plans to Support such a Feature?
Best wishes
As an event creator, we want the command history to be preserved so we have a history of commands for review and copying events' details for creating new events.
As commands are sent, the bot deletes the message. This makes it hard to review input and command history.
It's also more convenient to review the channel chat history for how events were created and would be easier to copy/paste events.
When I type an event creation command (event create, event summary, etc) the previous command and discal replies get deleted. I assume this is proper functionality, it definitely makes it cleaner.
The problem I'm seeing is that sometimes discal doesn't delete my command and/or the automated response.
Example:
Today I created an event,
!event create
!event summary <summary>
!event start <start datetime, correctly formated>
!event confirm
The event was created and its info was all correct, but I had a dangling response from discal:
Event start date/time set!
Please specify the following:
End date & ending time(military) in yyyy/MM/dd-HH:mm:ss format with the command !event end <DateAndTime>
followed by the event info. I also still saw my message !event confirm
.
I created an announcement in a similar manner, but all that was left at the end was the Announcement created
response, which I consider to be the correct way to end the creation of an event/announcement.
The club I am using this for, has a meeting every first Tuesday of the month. I know there is a monthly recurrence option, but as far as I'm aware, this will just take the numerical date and repeat it each month.
I would like to be able to set the recurrence to "Day" "Week nr in month" monthly. Is this possible?
For now my only option I can see is to find another bot, or to make the events manually.
Thanks for considering!
Patreon "Early Access" admins trying to link an external calendar
The bot/Google login
When trying to link an Google account with the bot account
Google login wizard
Bot can still link with Google accounts that have previously been connected to DisCal, however trying to link an account that has never been linked to DisCal (either a newly created Google account or a long-term existing Google account) fails with a "Sign in with Google temporarily diabled for this app" error.
The Bot account and user account should be linked.
The calendar sharing system used by Niles bot would sidestep this issue completely and permanently.
https://github.com/seanecoffey/Niles
Edit: No longer true. Google has changed how this method works, it would now require additional qworkarounds as well.
I think it would be a good idea that !events would by default show all upcoming events. If I were just a user
who wants to look up and sign up for events I would expect that !events shows all of the upcoming events.
If the number of events shown is too much there could be a configurable setting in the bot that limits the amount of shown events to a certain number.
Is your feature request related to a problem? Please describe.
A settings screen and viewer within the developer command section
From trello:
Add in an editor for guild settings of other guilds available to devs. This would allow us to view and edit/clear settings for guilds without having to join their guild and deal with their channels and permissions each time. Obvious options would be clearing prefix and channel and role settings. Perhaps it could even list what permissions the bot has been given on the selected server
Describe the solution you'd like
Screen just like !discal settings
that shows the settings for a specified guild to help support staff and developers resolve user issues and diagnose potential bugs
Describe alternatives you've considered
N/a
Additional context
N/a
Hi there,
I chose Americas/New York as my timezone, but when I create an event, it always puts it a day ahead, and the hours are incorrect, like it's pulling from a different timezone. Can anyone help me sort this out? Is it a bug? Thanks!
Is your feature request related to a problem? Please describe.
Sometimes events have a limited number of spots. The ability to limit RSVPs would make this much easier to manage through the bot.
Describe the solution you'd like
The ability to set the maximum number of RSVPs for a particular event, or set a default maximum for new events.
Describe alternatives you've considered
Alternatively a command to close/disable RSVPs would work as well, although it has issues.
Additional context
RPG Schedule Bot has this feature, with a waitlist:
Anyone who needs to be notified
The Bot
When an announcement is supposed to go off and doesn't
In whatever channel the announcement is supposed to happen in.
Create a specific annoucement (mine are on an External Calendar - not sure if that matters)
Announcement should go off and notify the users.
Thanks for all the hard work.
Regular users checking the DisCal calendar webpage
The website
Not sure.
Calendar page on the website
Not sure
Web Calendar should show events correctly
Executing !event delete <event_id>
returns Event successfully deleted
but the event still exists on checking with !events
it is a recurring event and i tried both with the initial part of event id and complete event id, with same results
checked the dates to make sure the first upcoming event wasnt deleted instead of the next one showing, so its not that either
only checked with recur
type events, havent checked other types
What did we do
!discal channel
command and could change the channel discal listen to.!discal role
command to limit the power of @everyone
@everyone member
was able to change the discal listening channel againWhat do we need
Is it possible to limit @everyone membre to be able to use only the !rsvp commands ?
Is your feature request related to a problem? Please describe.
RSVP is unusable needing the "announcement id", specially for people using phones
Describe the solution you'd like
anything else than needing a UUID, Event name for example
Describe alternatives you've considered
#52
Additional context
How are people using this feature in this state? Iam a techie but hell. It is not possible to copy the ID on a phone out of the embbeded mesage... are you expecting peopel to type that manually.
Unless I missed a specific command, I can't figure out how to make DisCal send a message to @everyone.
I set up a series of multiple test events on his calendar using the !event create command (and the following commands), but when the event time comes up, he doesn't make announcements.
Am I doing something wrong?
What language are you requesting translations for?
Translate bot to dutch
Do you know anyone that can help translate to this language?
N/a
Is your improvement request related to a problem? Please describe.
Add the ability to have more complex settings for announcements, so that one can set the announcement to announce during, or even after an event has occurred.
Describe the solution you'd like
Add a flag that allows setting an announcement to be posted before, during, or after an event.
Describe alternatives you've considered
N/a
Additional context
This is already roughly implemented in the backend, but beyond the database and object properties, is not really handled, effectively a hidden setting. I have yet to fully flesh out the code for actually handling how those announcements will be calculated, but implementing it in the front end should essentially be plug and play.
Anyone inputting the !a copy
command
The bot
When the !a copy [announcementID]
command is used
Discord bot interface
Try to copy an announcement
Bot should have created a copy of
Exception
java.lang.NullPointerException: defaultValue
at java.util.Objects.requireNonNull(Objects.java:228)
at reactor.core.publisher.MonoDefaultIfEmpty.(MonoDefaultIfEmpty.java:32)
at reactor.core.publisher.Mono.defaultIfEmpty(Mono.java:2012)
at org.dreamexposure.discal.client.announcement.AnnouncementCreator.init(AnnouncementCreator.java:72)
at org.dreamexposure.discal.client.module.command.AnnouncementCommand.lambda$moduleCopy$156(AnnouncementCommand.java:1395)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:118)
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:92)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1755)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:241)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1755)
at reactor.core.publisher.MonoHasElement$HasElementSubscriber.onNext(MonoHasElement.java:74)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73)
at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99)
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onNext(FluxRetryWhen.java:162)
at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:76)
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyInner.onNext(MonoFlatMapMany.java:242)
at reactor.core.publisher.FluxHandle$HandleSubscriber.onN
Shard Index
11
Class
org.dreamexposure.discal.client.listeners.discord.MessageCreateListener
Time
07-09-2020-06.06.20
Message
Error Handling message event
Info
!!a copy 73ec5efa-f675-417e-aefc-9730209615b6
Today at 02:06
Lovely bot, I'm enjoying it!
I would love to be able to schedule events that do not have a specific start and end time. In a Google Calendar, when in the 'week' view, they would be the events that show up at the top of the calendar, rather than taking up 'busy' time within the day itself.
I think these would be great for designating birthdays, deadlines, when people are out, etc.
Thanks!
Is your feature request related to a problem? Please describe.
Sometimes recurring events don't happen if they fall on a holiday, or events need to be suspended if the organizer is away.
Describe the solution you'd like
A command to suspend event announcements for a variable period of time, a day, a week, etc.
Describe alternatives you've considered
Manually deleting occurences of events that would fall on a holiday works for external calendar users, but is not feasible for internal calendar users.
Additional context
Add any other context or screenshots about the feature request here.
Is your feature request related to a problem? Please describe.
RSVPing through text commands is clunky and not all users are comfortable with it
Describe the solution you'd like
Using reacts to RSVP show a user has RSVP'd to an event.
Describe alternatives you've considered
None
Additional context
RPG Schedule bot has this functionality, it works quite well.
It would be great being able to make an event recur daily, weekly or monthly. Though I'm guessing this won't be viable until we can edit events.
Is your feature request related to a problem? Please describe.
Not exactly a problem, more an inconvenience. When clicking on "Guild Calendar" from Discord, it is inconvenient to have to go to the DisCal website, then click on "View in Google Calendar".
Describe the solution you'd like
It would be great if there is a setup option so that when clicking on "Guild Calendar" from Discord it would go directly to Google Calendar instead of to the DisCal website first.
Describe alternatives you've considered
n/a
Additional context
When adding an Event to a calendar, the timezone and starting time are converted in another timezone.
So it is not usable for european Users because it lists the starting time in US(?)-Time...
Users in server 519475451006025738
The bot
When attempting to edit an announcement
Announcement Creation Wizard
Trying to create or edit an event in 519475451006025738
Announcement Wizard should work
Super funky. User reported announcements not going off but everything seemed to be set correctly. He invited me to the server to check. Announcements appeared correct but when trying to edit one the bot didn't repond, but did generate an error in the log:
Error 519475451006025738.txt
Attempted to create new nnouncement. Seemed to be fine, but crashed out partway through. No error in the log, but the Announcement Creation Wizard just died after setting type and event ID but before setting channel or time.
Ticket #1757
Users inputting the command will see this after the announcement has been created and any user viewing the announcement when it is posted will see this
Bot
When an emoji is used in the announcement info
Announcement creation and editing wizard as well as announcement posts.
Create an announcement and add an emoji in the info field. Wait for announcement to be posted
Emoji should display correctly
Any member viewing an all day event
As far as I can tell, just on the bot's side, but possibly the website as well.
Any time an all day event is viewed, this is observed
Any place where an event can be viewed
Have an external calendar, create an all day event on google directly, then attempt to view this event with the bot
Date and time should show correctly, but are not showing correctly.
Is your feature request related to a problem? Please describe.
Most countries outside of CANZUK, the USA, and other former British colonies user 24 hour time.
Describe the solution you'd like
The bot should have an option to switch to 24 hour time
Describe alternatives you've considered
None
Additional context
I also user 24 time even though I'm in Canada ;)
Using @DisCal rsvp ontime <eventid>
won't work because of the extra space between @DisCal
and rsvp
. Ideally, DisCal would allow any amount of whitespace between tokens.
Thanks!
ive tried to google around for an answer but i cant seem to find anything
i tryed to use the rsvp command and
Givemhell - !rsvp
DisCalBOT - You must specify a function to execute! Use '!help` for a full list of valid commands and functions!
i am prob missing a prefix or suffix but i cant find any example or info on the rsvp command
Is your improvement request related to a problem? Please describe.
I have changed the prefix in order to avoid conflict with another bot. But help descriptions always display the default prefix in examples.
Describe the solution you'd like
Any help description with examples should use the configured prefix instead of the default.
What language are you requesting translations for?
Arabic
Do you know anyone that can help translate to this language?
N/a
Additional context
Not sure just how possible this is due to our current handling of placeholder elements, but would like to see this eventually.
Admin in specific server 455516225288536064
The Bot
Appears to be random
Database (presumably)
Not sure yet
When bot is unlocked in a specific server, unlocked status should stick
Not a high priority, bot can still access linked calendar, although Server branding is gone.
What language are you requesting translations for?
French
Do you know anyone that can help translate to this language?
N/a
Everyone inputting commands
The bot
Whenever inputting a command in Discord
Discord command interface
Change the prefix of the bot to anything other than the default, but the bot will still respond to the default !
prefix as well as the new prefix.
Bot should only respond to new prefix (and @'ing the bot)
Is your feature request related to a problem? Please describe.
My clan members are very frustrated with having to use the rsvp commands to mark attendance.
Describe the solution you'd like
The bot automatically adding reactions such as:
โ
Attending
๐ฅ Late
โ Not Attending
โ Uncertain
Describe alternatives you've considered
There is a bot that already has this feature, however it is unable to recur events reliably
Additional context
I don't think the system proposed in this thread needs to be as complex as the one shown in the screenshot.
The bot simply adding reactions so you don't have to would be enough for the people using DisCal I believe.
For the comfort of everybody this attendance feature should be toggleable if possible.
Thank you for reading,
Toastiiiis :)
Is your feature request related to a problem? Please describe.
Allow adding an extra field to RSVPs to show a role or additional "note" that a person has about their attendance.
Example use case would be for an MMO raid where you would include your role (like header, tank, etc)
Describe the solution you'd like
Add some way of adding info or a note to your rsvp, most likely extra command arguments instead of a whole new command, show it in parenthesis next to the user's name.
Example Command: !rsvp ontime divq9ihqhoq9hbm2tncj8set04_20171008T030000Z Main Healer
Example Output:
DisCal
RSVPs for Event
Event ID
divq9ihqhoq9hbm2tncj8set04_20171008T030000Z
On Time
Callador Julaan [Main Healer],
Late
N/a
Unsure
N/a
Not Going
N/a
`!event view <ID>` for event info
Describe alternatives you've considered
N/a
Additional context
N/a
What language are you requesting translations for?
Korean
Do you know anyone that can help translate to this language?
I will.
Additional context
Is it adaptable to make Korean translation? I'm worried what if this discord bot isn't compatible to Korean. If not, I want to translate it.
When creating events, times are displayed correctly, however once confirmed the time is shifted.
Replication:
Create a calendar with a timezone that is not US Central time.
Create an event.
Confirm said event.
View and the time will be off.
So far this has only been confirmed with calendars in the America/Los_Angeles timezone.
If you have this issue, please comment on this issue, rate, or provide us feedback. We need to confirm how widespread this bug is.
The bug is affecting one of my servers, and all its users.
I added this bot to two servers a while ago, about a week or so.
I'm using it in the Discord app for the computer, specifically Windows 10.
I'm not really sure, to be honest. I added this bot on two servers as I mentioned. It's working just fine on the first, however, the bot appears as "offline" on the other server, so there is no way of interacting with the bot.
I'm not really sure on how to fix this, I've tried changing permissions for the bot, kicking it and adding it again, tagging it directly...
Users issuing commands
The bot
Announcement Creation Wizard
Try to create an announcement
!a confirm
should save the announcement and close the wizard
May be related to #63 ?
Any user that wants to include an image in their event and doe not have an HTTPS link to the image
Bot, more so the code checking image validity
When creating or editing an event and trying to include an image whose link is not using HTTPS
Event creation/editing wizards.
Create an event and try to include an image whose link does not use HTTPS. The bot will fail to recognize the image as valid.
Image should be included in the vent
Not sure if this is tied directly to non-HTTPS links, or if the code checking image validity is just super fucked.
Admins creating events
The bot
When using the event creation wizard, the bot fails at the !e confirm
step
Event creation wizard
Create an event and try to confirm it.
Event should have been confirmed
Exception
java.lang.NullPointerException
at org.dreamexposure.discal.client.event.EventCreator.lambda$confirmEvent$18(EventCreator.java:172)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:118)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73)
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:173)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1755)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:241)
at reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:249)
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Shard Index
14
Class
org.dreamexposure.discal.client.listeners.discord.MessageCreateListener
Time
09-09-2020-05.44.54
Message
Error Handling message event
Info
!event confirm
Today at 13:44
Any user issuing a command with prefix, mentioning is unaffected.
Bot
Any time a command is issued
Any place where a command is issued to discal when using a prefixed command instead of a mentioned command.
Set prefix to something like ***%*
and then issue a command.
NEEDS MORE VERIFICATION AS TO WHAT PREFIXES CAUSE THIS
Command should work without fault, however the bot either fails to respond, or cannot process the prefix
Noticed by my self as I was seeing logs showing it error on processing and some users reported the bot not responding after changing their prefix.
Users viewing events in servers that use external calendars and have HTML in their events.
bot, possibly website, anywhere that displays event content (if website, could potentially lead to XSS)
Anytime one views and event that contains HTML content
Event view dialogs, potentially announcements and anywhere on the website that shows event content.
Have an event that contains HTML content and is then displayed by the bot.
HTML content should be stripped and safe HTML (line breaks, italics, href, etc) should be parsed and displayed safely.
First reported by Danny H on discord.
Users attempting to edit events
The bot
When editing an existing event in th bot
Event Creation/Editing Wizard
Attempting to edit events sometimes causes the bot to refuse to confirm the event. Appears to be sporradic.
Event should be confirmed.
Ticket #1833
Anyone giving commands to the bot in a specific 738513735605420042
The bot
Appears to be random at this point
Commands issued in Discord
Unknown
Prefix changes should stick
#dc-ticket-1743
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.