python TypeError: 'ChannelParticipants' object is not subscriptable
解決したいこと
pythonのtelegram APIを利用できるTelethonというライブラリを使用ている時に起きたエラーです。
メッセージ送信を実行すると5人ほど送信ができたのちにエラーが発生しました。
解決方法を教えて下さい。
main.py(self,data_set,group_key):
を呼び出してgroup_key=str型の変数(引数)を使用しているが、for文を利用するとなぜか途中でエラーが発生します。
発生している問題・エラー
TypeError: 'ChannelParticipants' object is not subscriptable
該当するソースコード
def SetData(self):
uni_id = self.df_member["user id"].unique()
selectKey = uni_id.tolist()
uni_id = self.df_member[self.df_member["user id"].isin(selectKey)]
groupSet = uni_id["group名"].unique()
for groupKey in groupSet:
print(f"グループ名{groupKey}に送信します。")
dataSet = uni_id[uni_id["group名"] == groupKey]
self.main(dataSet, groupKey)
def main(self, data_set, group_key):
for dialog in self.client.iter_dialogs():
print(dialog.name, 'has ID', dialog.id)
count = 0
for i in data_set["user id"]:
if count % 10 == 0:
time.sleep(10)
print("待機中")
time.sleep(0.1)
self.client.get_participants(group_key)
self.client.send_message(int(i), 'hi, Are you interested in poker?')
count += 1
自分で試したこと
self.client.get_participants(group_key)
の処理に時間がかかっている可能性を考慮し待機時間を設定0.5秒
print(type(group_key))でstring型と確認。
変数に何か入れ直してるわけではなく使い回している時のエラーで困っていたので質問しました。
是非解決方法を教えていただけると助かります。
async def main(self, data_set, group_key):
async for dialog in self.client.iter_dialogs():
print(dialog.name, 'has ID', dialog.id)
print(type(group_key))
print(group_key)
count = 1
async for i in data_set["user id"]:
print(str(group_key) + "###" + str(count))
await self.client.get_participants(group_key, aggressive=False, limit=2000)
await self.client.send_message(int(i), 'today is happy? ')
def test(self):
uni_id = self.df_member["user id"].unique()
selectKey = uni_id.tolist()
uni_id = self.df_member[self.df_member["user id"].isin(selectKey)]
groupSet = uni_id["group名"].unique()
for groupKey in groupSet:
print(f"グループ名{groupKey}に送信します。")
dataSet = uni_id[uni_id["group名"] == groupKey]
print(dataSet)
loop = asyncio.get_event_loop()
loop.run_until_complete(self.main(dataSet, groupKey))
def ask_exit():
for task in asyncio.Task.all_tasks():
task.cancel()
asyncio.get_event_loop().stop()
if __name__ == '__main__':
telegram = Scraper()
telegram.connect()
telegram.getGroups()
telegram.test()
発生している問題・エラー
プロセスは終了コード 1 で終了しました
0