qwertyadrian / TG_AutoPoster

Telegram Bot for reposting from VK
MIT License
98 stars 19 forks source link

bug #16

Closed mrgulka closed 2 years ago

mrgulka commented 2 years ago
(tgbot) C:\Users\usr\Desktop\TelegramBot>py -m TG_AutoPoster
Traceback (most recent call last):
  File "C:\Users\usr\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\usr\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\TG_AutoPoster\__main__.py", line 108, in <module>
    client = AutoPoster(
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\TG_AutoPoster\TG_AutoPoster.py", line 36, in __init__
    self.config = ini_to_dict(self.config_path.with_suffix(".ini"))
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\TG_AutoPoster\utils\convert.py", line 16, in ini_to_dict
    for option in config.options("global"):
  File "C:\Users\usr\AppData\Local\Programs\Python\Python310\lib\configparser.py", line 675, in options
    raise NoSectionError(section) from None
configparser.NoSectionError: No section: 'global'

доброго времени суток! бот даже не включается, выводя вот это безобразие. что делать?

qwertyadrian commented 2 years ago

Это ошибка наблюдается в том случае, если бот не может найти файл конфигурации с именем config.yaml. Бот пытается открыть файл config.yaml в директории C:\Users\usr\Desktop\TelegramBot (в вашем случае), но файл по какой-то причине открыть не удалось.

Ваш файл конфигурации имеет правильное имя и он находится в той же директории, из которой запускается бот? Если да, но ошибка все равно наблюдается, то отправьте логи бота, запустив его с параметром --debug

В будущем используйте эту форму для создания отчетов об ошибке.

mrgulka commented 2 years ago

мой файл конфигурации лежит в C:\Users\usr\Desktop\TelegramBot\tgbot. спасибо, я проверю это

mrgulka commented 2 years ago
(tgbot) C:\Users\usr\Desktop\TelegramBot>py -m TG_AutoPoster --debug
2022-09-01 22:10:12.904 | INFO     | __main__:<module>:97 - TG AutoPoster запущен
2022-09-01 22:10:12.904 | DEBUG    | __main__:<module>:98 - Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug  1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)]
TG_AutoPoster 3.3.0
OS: win32
Config path: C:\Users\usr\Desktop\TelegramBot\config.yaml
Cache dir: C:\Users\usr\Desktop\TelegramBot\.cache
Passed args:['--debug']
Traceback (most recent call last):
  File "C:\Users\usr\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\usr\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\TG_AutoPoster\__main__.py", line 108, in <module>
    client = AutoPoster(
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\TG_AutoPoster\TG_AutoPoster.py", line 34, in __init__
    self.reload_config()
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\TG_AutoPoster\TG_AutoPoster.py", line 179, in reload_config
    self.config: dict = yaml.safe_load(stream)
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\yaml\__init__.py", line 125, in safe_load
    return load(stream, SafeLoader)
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\yaml\__init__.py", line 79, in load
    loader = Loader(stream)
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\yaml\loader.py", line 34, in __init__
    Reader.__init__(self, stream)
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\yaml\reader.py", line 85, in __init__
    self.determine_encoding()
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\yaml\reader.py", line 124, in determine_encoding
    self.update_raw()
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\yaml\reader.py", line 178, in update_raw
    data = self.stream.read(size)
  File "C:\Users\usr\AppData\Local\Programs\Python\Python310\lib\encodings\cp1251.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 1101: character maps to <undefined>

помогите((

qwertyadrian commented 2 years ago

Файл конфигурации должен иметь кодировку UTF-8. Но скорее всего проблема в том, что Python по какой-то причине пытается открыть файл используя кодировку cp1251.

Попробуйте запустить бота с помощью команды: py -X utf8 -m TG_AutoPoster --debug К следующему релизу я добавлю явное указание кодировки при чтении файла конфигурации.

И можете также прикрепить файл конфигурации?

mrgulka commented 2 years ago
domains:
    domain1:
        channel:
        - '@avatar_universe'
        disable_notification: false
        use_long_poll: true
        what_to_send:
        - all
    https://vk.com/avatar_film:
        channel: '@avatar_universe'
        last_id: 105332
        last_story_id: 0
        pinned_id: 0
settings:
    admins_id:
    - 453370423
    disable_notification: true
    disable_web_page_preview: false
    send_reposts: true
    sign_posts: true
telegram:
    api_hash: ea8b0dd**4e13dd2e046b9b432
    api_id: 19**85
    bot_token: 5156719584:AA**hCns4RCQFrz-xy9MERTg
vk:
    login: ''
    password: ''
    token: 592a10e2592a10e**0bf87d5e945fff3a5fbc

он работает... но как то ненормально.

(tgbot) C:\Users\usr\Desktop\TelegramBot>Traceback (most recent call last):
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\TG_AutoPoster\__main__.py", line 11, in <module>
    from . import AutoPoster, __version__
ImportError: attempted relative import with no known parent package
py -X utf8 -m TG_AutoPoster --debug
2022-09-02 17:53:38.229 | INFO     | __main__:<module>:97 - TG AutoPoster запущен
2022-09-02 17:53:38.229 | DEBUG    | __main__:<module>:98 - Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug  1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)]
TG_AutoPoster 3.3.0
OS: win32
Config path: C:\Users\usr\Desktop\TelegramBot\config.yaml
Cache dir: C:\Users\usr\Desktop\TelegramBot\.cache
Passed args:['--debug']
C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\apscheduler\util.py:436: PytzUsageWarning: The localize method is no longer necessary, as this time zone supports the fold attribute (PEP 495). For more details on migrating to a PEP 495-compliant implementation, see https://pytz-deprecation-shim.readthedocs.io/en/latest/migration.html
  return tzinfo.localize(dt)
Job "AutoPoster.listen (trigger: date[2022-09-02 17:53:38 MSK], next run at: 2022-09-02 17:53:38 MSK)" raised an exception
Traceback (most recent call last):
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\apscheduler\executors\base.py", line 125, in run_job
    retval = job.func(*job.args, **job.kwargs)
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\TG_AutoPoster\TG_AutoPoster.py", line 155, in listen
    longpoll = VkBotLongPoll(self.vk_session, group_id=-group.group_id)
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\vk_api\bot_longpoll.py", line 219, in __init__
    self.update_longpoll_server()
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\vk_api\bot_longpoll.py", line 232, in update_longpoll_server
    response = self.vk.method('groups.getLongPollServer', values)
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\vk_api\vk_api.py", line 697, in method
    raise error
vk_api.exceptions.ApiError: [28] Application authorization failed: method is unavailable with service token.
2022-09-02 17:53:43.601 | INFO     | TG_AutoPoster.utils.vk.group:get_posts:59 - [VK] Проверка на наличие новых постов в https://vk.com/avatar_film с последним ID 105332
2022-09-02 17:53:44.148 | INFO     | TG_AutoPoster.TG_AutoPoster:get_new_posts:142 - [VK] Проверка завершена

при /restart в телеге не может заново запуститься

2022-09-02 17:59:31.928 | INFO     | TG_AutoPoster.utils.tg.tools:admin_check:13 - Пользователь Гулька None c ID 453370423 использовал команду /restart

(tgbot) C:\Users\usr\Desktop\TelegramBot>Traceback (most recent call last):
  File "C:\Users\usr\Desktop\TelegramBot\tgbot\lib\site-packages\TG_AutoPoster\__main__.py", line 11, in <module>
    from . import AutoPoster, __version__
ImportError: attempted relative import with no known parent package

в остальном, все в порядке. хотелось бы узнать, Вы добавите ли подпись снизу, изменяющуюся в конфиге для всех постов? например, чтобы подписать название канала и при нажатии на этот текст переходило по ссылке.

gif

qwertyadrian commented 2 years ago

он работает... но как то ненормально. vk_api.exceptions.ApiError: [28] Application authorization failed: method is unavailable with service token.

Long Poll API не работает с сервисным ключом доступа. Либо используйте ключ доступа пользователя или сообщества (подробнее описано в README.md чуть ниже раздела Запуск) либо отключите в файле конфигурации параметр use_long_poll.

при /restart в телеге не может заново запуститься ImportError: attempted relative import with no known parent package

Бот вылетает с ошибкой импорта. К сожалению, я не знаю что с этим делать.

хотелось бы узнать, Вы добавите ли подпись снизу, изменяющуюся в конфиге для всех постов? например, чтобы подписать название канала и при нажатии на этот текст переходило по ссылке.

Думаю я реализую возможность добавить к посту любой пользовательский текст (в том числе и ссылки) в конце сообщения.

mrgulka commented 2 years ago

спасибо огромное за бота и помощь!

mrgulka commented 2 years ago

Адриан, у Вас своя машина или вы где-то на хосте? Можете прорекламировать?

qwertyadrian commented 2 years ago

Есть пара серверов на Oracle Cloud, но бот работает на домашнем Raspberry Pi 3 Model B.