CSSS / wall_e

CSSS Discord Bot (Wall-E)
GNU General Public License v3.0
19 stars 19 forks source link

New command to show SFU classes next semester #656

Open EarthenSky opened 1 week ago

EarthenSky commented 1 week ago

We'd like a new command which gives a summary of all the SFU classes being run next semester, including class names & a short description. This command should enable the user to filter based on the semester (default to next semester), department (default all), and year (default all). You can use whatever parameter syntax you'd like.

ex:

This should extend the approach used in def outline(...) in https://github.com/CSSS/wall_e/blob/master/wall_e/extensions/sfu.py You shouldn't need to modify anything outside this file, except for getting the bot setup locally for testing.

As always, if you have any questions about this issue please feel free to ask me! (or if you have any questions about setup, please reach out to Jace)

Bonus If you'd like, I'd appreciate if you can clean up the code style of module, as outline definitely needs to be more dry

chanchantang commented 1 week ago

To clarify, is this a completely new command to be created using the logic of def outline(...), or will it be adding to the existing .outline command?

EarthenSky commented 1 week ago

To clarify, is this a completely new command to be created using the logic of def outline(...), or will it be adding to the existing .outline command?

I think it should be a completely new command

Originally I mentioned this should extend outline because I was thinking about where we'd retrieve the course info data. outline essentially just does a fetch using sfu's public course outline API.

Though looking into it a bit deeper, it's possible it doesn't completely solve our problem. https://www.sfu.ca/bin/wcm/course-outlines?2019/fall/CMPT gives essentially what we want for just CMPT courses, but not if we wanted to include all departments; in that case we'd have to make multiple requests... Maybe we should update the interface to only allow for a few?

Feel free to choose whatever seems most reasonable!