da52a4dbf64a7fe32a8bd33164c48fc315a784d1
[coldcallbot-discord.git] / README
1 Setting up the Discord Bot
2 ======================================
3
4 I run the Discord boy from my laptop. It requires the discord Python
5 module available in PyPi and installable like:
6
7     $ pip3 install discord
8
9 I don't have details on how I set up my own Discord bot and/or invited
10 it to my server but I hope you'll add to this file as you do this and
11 figure out what needs to happen.
12
13 Using the Cold Call Bot
14 ======================================
15
16 1. All students must have the role "Student" in Discord. If they do
17    not have the roll, they will not be called upon.
18
19 2. The "classroom" is the "Classroom Voice" channel. This is currently
20    hard coded.
21
22 3. The bot has only one command: "$next" which calls a person and
23    records this information in the logs. You can run this command in
24    any channel that the bot has access to (e.g., #bot-commands) but I
25    do it a public channel called "#classroom-questions" so that
26    students can watch it operate.
27
28
29 Daily Process
30 ======================================
31
32 You need to start the bot from the laptop each day. I do that by:
33
34   $ ./coldcallboy.py
35
36 The bot will run in the terminal, print out data as it works including
37 detailed weights as it goes, and it will record data into files in the
38 /data/ directory.
39
40
41 After class, you will have two new files created that will be named
42 like this (with today's date):
43
44     attendance-2020-10-05.tsv
45     call_list-2020-10-05.tsv
46
47 Each day, you need to open up "call_list-YYYY-MM-DD.tsv" and edit the
48 final two columns. The first columns `answered` means that the person
49 responded and answered the question (i.e., they were present in the
50 room but away from their computer and unresponsive). This is almost
51 always TRUE but would be FALSE if the student were missing.
52
53 The final column `assessment` is GOOD, FAIR, or BAD in my rubric. I've
54 detailed what that means on this page:
55
56 https://wiki.communitydata.science/User:Benjamin_Mako_Hill/Assessment#Rubric_for_case_discussion_answers
57
58 I take notes on student answers on paper during class (typically I
59 only note down non "GOOD" answers) and then add these to the sheet
60 immediately after class.
61
62 I keep my entire data directory in git and I'd recommend that you do
63 too.
64
65 I don't expect that these will necessary work without
66 modification. It's a good idea to go line-by-line through these to
67 make sure they are doing what *you* want and that you agree with the
68 assessment logic built into this.
69
70 Assessment and Tracking
71 ======================================
72
73 These scripts rely on a file in this repository called
74 `data/student_information.csv` which I have set to be downloaded
75 automatically from a Google form using a 1-line wget command.
76
77 For reference, that file has the following column labels (this is the
78 full header, in order):
79
80     Timestamp
81     Your UW student number
82     Name you'd like to go by in class
83     Your Wikipedia username
84     Your username on the class Discord server
85     Preferred pronouns
86     Anything else you'd like me to know?
87
88 The scripts in this directory are meant to be run or sourced *from*
89 the data directory. As in:
90
91     $ cd ../data
92     $ R --no-save < ../assessment_and_tracking/track_participation.R
93
94 There are three files in that directory:
95
96 track_enrolled.R:
97
98     This file keeps track of who is in Discord, who is enrolled for
99     the class, etc. This helps me remove people from the
100     student_informaiton.csv spreadsheet who are have dropped the
101     class, deal with users who change their Discord name, and other
102     things that the scripts can't deal with automatically.
103
104     This all need to be dealt with manually, one way or
105     another. Sometimes by modifying the script, sometimes by modifying
106     the files in the data/ directory.
107
108     This requires an additional file called
109     `myuw-COM_482_A_autumn_2020_students.csv` which is just the saved
110     CSV from https://my.uw.edu which includes the full class list. I
111     download this one manually.
112
113 track_participation.R:
114
115     This file generates histograms and other basic information about
116     the distribution of participation and absences. I've typically run
117     this weekly after a few weeks of the class and share these images
118     with students at least once or twice in the quarter.
119
120     This file is also sourced by compute_final_case_grades.R.
121
122 compute_final_case_grades.R:
123
124     You can find a narrative summary of my assessment process here:
125
126     https://wiki.communitydata.science/User:Benjamin_Mako_Hill/Assessment#Overall_case_discussion_grade
127
128     This also requires the registration file (something like
129     `myuw-COM_482_A_autumn_2020_students.csv`) which is described
130     above.
131
132     To run this script, you will need to create the following subdirectories:
133
134     data/case_grades
135     data/case_grades/student_reports
136
137
138 One final note: A bunch of things in these scripts assumes a UW 4.0
139 grade scale. I don't think it should be hard to map these onto some
140 other scale, but that's an exercise I'll leave up to those that want
141 to do this.

Community Data Science Collective || Want to submit a patch?