Этот код прекрасно работает на 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).
Результата нет, в любом случае выходит ошибка.
Что в этом коде не так? Почему он на одной ОС работает, а на другой нет.