@Hadidja09

Один и тот же код Python на win 11 работает, а на Debian — нет, версия 3.10, библиотеки есть, что не так?

Этот код прекрасно работает на windows 11, но не работает в Linux Debian.
Версия Python 3.10.11 одинаковая.
Библиотеки установлены.

import vk_api
import requests
import json
import random
import re
from telegram import InputMediaPhoto, InputMediaDocument
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters

# Токен API VK
vk_token = ''

# ID группы VK
vk_group_id = '999'

# Токен API Telegram
telegram_token = ''
# ID чата в Telegram, куда нужно отправлять сообщения
telegram_chat_id = '-9999'

# Авторизация в VK
vk_session = vk_api.VkApi(token=vk_token)
vk = vk_session.get_api()

# Получение случайного поста с группы VK
while True:
    offset = random.randint(1, 13829)
    random_post = vk.wall.get(owner_id='-' + vk_group_id, count=1, offset=offset)
    post_id = str(random_post['items'][0]['id'])
    text = random_post['items'][0]['text']

    # Получение ID последнего опубликованного поста
    filename = 'published_posts.txt'
    with open(filename, 'r') as f:
        published_posts = [int(line.strip()) for line in f.readlines()]
    if post_id in published_posts or re.search(r'этого года|исполнилось', text, re.IGNORECASE):
        continue
    else:
        break

# Получение списка фотографий последнего поста
attachments = random_post['items'][0]['attachments']
media = []
for i, attachment in enumerate(attachments):
    if attachment['type'] == 'photo':
        sizes = attachment['photo']['sizes']
        photo_url = sizes[-1]['url']
        if i == 0:
            media.append(InputMediaPhoto(photo_url, caption=text))
        else:
            media.append(InputMediaPhoto(photo_url))
    elif attachment['type'] == 'doc':
        doc_url = attachment['doc']['url']
        media.append(InputMediaDocument(doc_url))

# Отправка сообщения с текстом и фотографиями в Telegram
bot = Updater(token=telegram_token, use_context=True)
bot.bot.sendMediaGroup(chat_id=telegram_chat_id, media=media)
bot.stop()

# Добавление ID опубликованного поста в список уже опубликованных
with open(filename, 'a') as f:
    f.write(post_id + '\n')

# Запись ID опубликованного поста с увеличением на 1 в файл
with open('published_posts.txt', 'w') as f:
    f.write(str(int(post_id)+1))

# Замена текста с помощью регулярного выражения
text = re.sub(r'\[(club|public|event)\d+\|(.+?)\]', r'\2', text)


Ошибка:

File "123.py", line 56, in <module>
    bot = Updater(token=telegram_token)
TypeError: __init__() got an unexpected keyword argument 'token'


Я заменял на token:
С bot = Updater(token=telegram_token, use_context=True)

На
bot = Updater(bot_token=telegram_token, use_context=True).

Результата нет, в любом случае выходит ошибка.
Что в этом коде не так? Почему он на одной ОС работает, а на другой нет.
  • Вопрос задан
  • 182 просмотра
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Разные версии библиотек, на винде старая

https://github.com/python-telegram-bot/python-tele...
https://github.com/python-telegram-bot/python-tele...

В последней версии class telegram.ext.Updater(bot, update_queue)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы