17
0

Adding support for classes which each use their own category. Moving key into a config file to avoid accidental sharing

This commit is contained in:
Jeremy Foote 2020-12-30 14:14:35 -05:00
parent d77f32f5c1
commit 788ed2de62
5 changed files with 31 additions and 14 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
*~
__pycache__
config.py

2
README
View File

@ -18,7 +18,7 @@ the steps there, with one important exception:
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)
Finally, you need to copy your bot's Token (also found on the "Bot" tab)
into coldcallbot.py. Pass it as the argument to `ccb.run()`.

View File

@ -11,22 +11,26 @@ import re
import discord
class ColdCall():
def __init__ (self):
def __init__ (self, course = ''):
self.course = course
self.today = str(datetime.date(datetime.now()))
# how much less likely should it be that a student is called upon?
self.weight = 2
self.__set_filenames()
def __set_filenames(self):
# filenames
self.__fn_studentinfo = "data/student_information.tsv"
self.__fn_daily_calllist = f"data/call_list-{self.today}.tsv"
self.__fn_daily_attendance = f"data/attendance-{self.today}.tsv"
self.__fn_studentinfo = f"data/{self.course}/student_information.tsv"
self.__fn_daily_calllist = f"data/{self.course}/call_list-{self.today}.tsv"
self.__fn_daily_attendance = f"data/{self.course}/attendance-{self.today}.tsv"
def __load_prev_questions(self):
previous_questions = defaultdict(int)
for fn in listdir("./data/"):
for fn in listdir(f"./data/{self.course}/"):
if re.match("call_list-\d{4}-\d{2}-\d{2}.tsv", fn):
with open(f"./data/{fn}", 'r') as f:
with open(f"./data/{self.course}/{fn}", 'r') as f:
for row in DictReader(f, delimiter="\t"):
if not row["answered"] == "FALSE":
previous_questions[row["discord_name"]] += 1
@ -40,7 +44,7 @@ class ColdCall():
preferred_names = {}
with open(self.__fn_studentinfo, 'r') as f:
for row in DictReader(f, delimiter="\t"):
preferred_names[row["Your username on the class Discord server"]] = row["Name you'd like to go by in class"]
preferred_names[row["discord_name"]] = row["name"]
if selected_student in preferred_names:
return preferred_names[selected_student]
@ -99,6 +103,10 @@ class ColdCall():
coldcall_message = f"@{selected_student}, you're up!"
return coldcall_message
def update_course(self, course_name):
self.course = course_name
self.__set_filenames()
# cc = ColdCall()
# test_student_list = ["jordan", "Kristen Larrick", "Madison Heisterman", "Maria.Au20", "Laura (Alia) Levi", "Leona Aklipi", "anne", "emmaaitelli", "ashleylee", "allie_partridge", "Tiana_Cole", "Hamin", "Ella Qu", "Shizuka", "Ben Baird", "Kim Do", "Isaacm24", "Sam Bell", "Courtneylg"]

View File

@ -3,6 +3,7 @@
from coldcall import ColdCall
import re
import discord
import config
## create the coldcall object
cc = ColdCall()
@ -11,12 +12,15 @@ class ColdCallBot (discord.Client):
async def on_ready(self):
print(f'Logged on as {self.user}! Ready for class!')
async def on_message(self, message):
async def on_message(self, message, voice_channel = 'Class Sessions'):
if message.author == self.user:
return
if message.content.startswith('$next'):
classroom = discord.utils.get(message.guild.voice_channels, name='Classroom Voice')
if message.channel.category:
if cc.course != message.channel.category:
cc.update_course(message.channel.category)
classroom = [x for x in message.guild.voice_channels if x.name == voice_channel and x.category_id == message.channel.category_id][0]
present_students = []
for member in classroom.members:
@ -29,6 +33,8 @@ class ColdCallBot (discord.Client):
if len(present_students) < 1:
msg_text = "I don't see any students currently in the Classroom Voice channel!"
else:
if cc is None:
print('hi')
msg_text = cc.coldcall(present_students)
await message.channel.send(msg_text)
@ -39,5 +45,4 @@ intents.members = True
intents.presences = True
ccb = ColdCallBot(intents=intents)
ccb.run('CHANGEME')
ccb.run(config.key)

3
update_student_info.sh Executable file
View File

@ -0,0 +1,3 @@
wget "https://docs.google.com/spreadsheets/d/e/2PACX-1vTBboNsATMKYdQM3WsbcIvloqRlvR9ajSgZWyHN6Bci50wfiPBjibTxaF8XcMgAJycvKNdAfR9LBHbp/pub?gid=1302288840&single=true&output=csv" -O ./data/COM\ 495\ -\ Turning\ Data\ into\ Insights\ and\ Stories/student_information.tsv
wget "https://docs.google.com/spreadsheets/d/e/2PACX-1vSPL6jKD2rXQqac6O0pMb4JRxMAOM-EdPkZw2FuebbJHiZdAl4n5Df5RCyuxoHcwOcW0VbBevnec6b-/pub?gid=1575299441&single=true&output=csv" -O ./data/COM\ 411\ -\ Communication\ and\ Social\ Networks/student_information.tsv