来自 configparser 的列表作为参数传递给 telethon 错误

List from configparser passing as argument to telethon errors

我遇到了一个小问题,使我陷入了从电报聊天中收集数据的代码小脚本。首先,我将展示我的代码和配置文件:

Config.ini:

[account]
api_id = xxxx
api_hash = xxxx

[parser]
channels_to_parse = [-xxxx,-xxxx]

Run.py

import configparser

import asyncio
import time
from telethon import events
from telethon import TelegramClient
from telethon.tl import functions, types
from datetime import datetime


#load config file
config = configparser.ConfigParser()
config.read('config.ini', encoding="utf-8")

#telethon init
client = TelegramClient('sess', config.get("account", 'api_id'), config.get("account", 'api_hash'))
client.start()

#main cycle
@client.on(events.NewMessage(chats=config.get('parser' , 'channels_to_parse')))
async def main(event):
    #some code...
            
client.run_until_disconnected()

主要问题来自包含 telethon 参数的字符串,该字符串指向我从中收集数据的聊天 ID:

ValueError: Cannot find any entity corresponding to "[-xxxx]"

当我手动传递参数时,没有 configparser:

@client.on(events.NewMessage(chats = [-xxxx, -xxxx]))

一切正常。所以我认为这个问题与 configparser 或 configparser 参数有关。我检查了 configparser 文档,但没有找到任何可以帮助我的东西。

我已经尝试使用频道名称而不是 ID。也许谁能解释我做错了什么。

我目前无法检查,但我知道 configparser returns 是 str 类型,您需要一个列表。但我可能是错的(

更新

我查了一下,没错!

config.ini:

[parser]
channels_to_parse = -xxxx -xxxx

file.py:

parser = config.get('parser', 'channels_to_parse') # type str
chats = [int(i) for i in parser.split()] # type list
@client.on(events.NewMessage(chats=chats))