155 lines
5.3 KiB
Plaintext
155 lines
5.3 KiB
Plaintext
Setting up the Discord Bot
|
|
======================================
|
|
|
|
I run the Discord bot from my laptop. It requires the discord Python
|
|
module available in PyPi and installable like:
|
|
|
|
$ pip3 install discord
|
|
|
|
Setting up the Bot
|
|
=====================================
|
|
|
|
The documentation for the `discord` python package
|
|
(https://discordpy.readthedocs.io/en/latest/discord.html) does a good
|
|
job explaining how to set up a Discord bot with your server. Follow
|
|
the steps there, with one important exception:
|
|
|
|
1. On the "Bot" tab in the discord application configuration page you
|
|
need to enable both "Privileged Gateway Intents." This allows the bot
|
|
to see who is present and active in the channel.
|
|
|
|
Finally, you need to copy your bot'ss Token (also found on the "Bot" tab)
|
|
into coldcallbot.py. Pass it as the argument to `ccb.run()`.
|
|
|
|
|
|
|
|
Using the Cold Call Bot
|
|
======================================
|
|
|
|
1. All students must have the role "Student" in Discord. If they do
|
|
not have the roll, they will not be called upon.
|
|
|
|
2. The "classroom" is the "Classroom Voice" channel. This is currently
|
|
hard coded.
|
|
|
|
3. The bot has only one command: "$next" which calls a person and
|
|
records this information in the logs. You can run this command in
|
|
any channel that the bot has access to (e.g., #bot-commands) but I
|
|
do it a public channel called "#classroom-questions" so that
|
|
students can watch it operate.
|
|
|
|
|
|
Daily Process
|
|
======================================
|
|
|
|
You need to start the bot from the laptop each day. I do that by:
|
|
|
|
$ ./coldcallbot.py
|
|
|
|
The bot will run in the terminal, print out data as it works including
|
|
detailed weights as it goes, and it will record data into files in the
|
|
/data/ directory.
|
|
|
|
|
|
After class, you will have two new files created that will be named
|
|
like this (with today's date):
|
|
|
|
attendance-2020-10-05.tsv
|
|
call_list-2020-10-05.tsv
|
|
|
|
Each day, you need to open up "call_list-YYYY-MM-DD.tsv" and edit the
|
|
final two columns. The first columns `answered` means that the person
|
|
responded and answered the question (i.e., they were present in the
|
|
room but away from their computer and unresponsive). This is almost
|
|
always TRUE but would be FALSE if the student were missing.
|
|
|
|
The final column `assessment` is GOOD, FAIR, or BAD in my rubric. I've
|
|
detailed what that means on this page:
|
|
|
|
https://wiki.communitydata.science/User:Benjamin_Mako_Hill/Assessment#Rubric_for_case_discussion_answers
|
|
|
|
I take notes on student answers on paper during class (typically I
|
|
only note down non "GOOD" answers) and then add these to the sheet
|
|
immediately after class.
|
|
|
|
I keep my entire data directory in git and I'd recommend that you do
|
|
too.
|
|
|
|
I don't expect that these will necessary work without
|
|
modification. It's a good idea to go line-by-line through these to
|
|
make sure they are doing what *you* want and that you agree with the
|
|
assessment logic built into this.
|
|
|
|
Assessment and Tracking
|
|
======================================
|
|
|
|
These scripts rely on a file in this repository called
|
|
`data/student_information.csv` which I have set to be downloaded
|
|
automatically from a Google form using a 1-line wget command.
|
|
|
|
For reference, that file has the following column labels (this is the
|
|
full header, in order):
|
|
|
|
Timestamp
|
|
Your UW student number
|
|
Name you'd like to go by in class
|
|
Your Wikipedia username
|
|
Your username on the class Discord server
|
|
Preferred pronouns
|
|
Anything else you'd like me to know?
|
|
|
|
The scripts in this directory are meant to be run or sourced *from*
|
|
the data directory. As in:
|
|
|
|
$ cd ../data
|
|
$ R --no-save < ../assessment_and_tracking/track_participation.R
|
|
|
|
There are three files in that directory:
|
|
|
|
track_enrolled.R:
|
|
|
|
This file keeps track of who is in Discord, who is enrolled for
|
|
the class, etc. This helps me remove people from the
|
|
student_informaiton.csv spreadsheet who are have dropped the
|
|
class, deal with users who change their Discord name, and other
|
|
things that the scripts can't deal with automatically.
|
|
|
|
This all need to be dealt with manually, one way or
|
|
another. Sometimes by modifying the script, sometimes by modifying
|
|
the files in the data/ directory.
|
|
|
|
This requires an additional file called
|
|
`myuw-COM_482_A_autumn_2020_students.csv` which is just the saved
|
|
CSV from https://my.uw.edu which includes the full class list. I
|
|
download this one manually.
|
|
|
|
track_participation.R:
|
|
|
|
This file generates histograms and other basic information about
|
|
the distribution of participation and absences. I've typically run
|
|
this weekly after a few weeks of the class and share these images
|
|
with students at least once or twice in the quarter.
|
|
|
|
This file is also sourced by compute_final_case_grades.R.
|
|
|
|
compute_final_case_grades.R:
|
|
|
|
You can find a narrative summary of my assessment process here:
|
|
|
|
https://wiki.communitydata.science/User:Benjamin_Mako_Hill/Assessment#Overall_case_discussion_grade
|
|
|
|
This also requires the registration file (something like
|
|
`myuw-COM_482_A_autumn_2020_students.csv`) which is described
|
|
above.
|
|
|
|
To run this script, you will need to create the following subdirectories:
|
|
|
|
data/case_grades
|
|
data/case_grades/student_reports
|
|
|
|
|
|
One final note: A bunch of things in these scripts assumes a UW 4.0
|
|
grade scale. I don't think it should be hard to map these onto some
|
|
other scale, but that's an exercise I'll leave up to those that want
|
|
to do this.
|