]> code.communitydata.science - coldcallbot-discord.git/commitdiff
Adding support for classes which each use their own category. Moving key into a confi...
authorJeremy Foote <jdfoote1@gmail.com>
Wed, 30 Dec 2020 19:14:35 +0000 (14:14 -0500)
committerJeremy Foote <jdfoote1@gmail.com>
Wed, 30 Dec 2020 19:14:35 +0000 (14:14 -0500)
.gitignore
README
coldcall.py
coldcallbot.py
update_student_info.sh [new file with mode: 0755]

index 9b5e2e844964d81839c3a08e41fd6ac395a1187f..7dcced76686b303963fba03939c5c3b008382e5e 100644 (file)
@@ -1,2 +1,3 @@
 *~
 __pycache__
 *~
 __pycache__
+config.py
diff --git a/README b/README
index 611926e2c9bcf21523ebf7b615733c2ea0fd33d7..f05a2042f47f2026948639c5704b8be13d3f35e7 100644 (file)
--- a/README
+++ b/README
@@ -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.
 
 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()`.
 
 
 into coldcallbot.py. Pass it as the argument to `ccb.run()`.
 
 
index 190584453c10253981f4341f5cd13f771c70948a..a18c893f78fb96eb42a449fb6d5f9b5307597b04 100644 (file)
@@ -11,22 +11,26 @@ import re
 import discord
 
 class ColdCall():
 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.today = str(datetime.date(datetime.now()))
         # how much less likely should it be that a student is called upon?
-        self.weight = 2 
+        self.weight = 2
+        self.__set_filenames()
 
 
+
+    def __set_filenames(self):
         # filenames
         # 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)
 
 
     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):
             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
                     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 = {}
         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]
 
         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
 
             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"]
 # 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"]
index 392028a0e82ef6484dd0b098ab9ac3237b8f4948..fd7669f7ceea6414baedb2677d1535755261811d 100755 (executable)
@@ -3,6 +3,7 @@
 from coldcall import ColdCall
 import re
 import discord
 from coldcall import ColdCall
 import re
 import discord
+import config
 
 ## create the coldcall object
 cc = ColdCall()
 
 ## create the coldcall object
 cc = ColdCall()
@@ -11,13 +12,16 @@ class ColdCallBot (discord.Client):
     async def on_ready(self):
         print(f'Logged on as {self.user}! Ready for class!')
 
     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'):
         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:
                 if 'Students' in [r.name for r in member.roles]:
             present_students = []
             for member in classroom.members:
                 if 'Students' in [r.name for r in member.roles]:
@@ -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 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)
                 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)
 intents.presences = True
 
 ccb = ColdCallBot(intents=intents)
-ccb.run('CHANGEME')
-
+ccb.run(config.key)
diff --git a/update_student_info.sh b/update_student_info.sh
new file mode 100755 (executable)
index 0000000..b8ea3f1
--- /dev/null
@@ -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

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