При створенні та налаштуванні Telegram бота можуть виникати різноманітні проблеми, з якими доводиться зіткнутися розробникам. Однією з таких проблем є помилка
1 |
TypeError: Mapping.get() takes from 2 to 3 positional arguments but 5 were given |
, яка може виникнути при запуску бота на VPS. У цій статті ми розглянемо цю помилку докладніше та надамо рішення для її виправлення.
Основна проблема полягає в неправильному використанні функції
1 |
environ.get() |
у файлі
1 |
info.py |
, де зберігаються деталі роботи бота, такі як канали, ідентифікатори адміністраторів, URL бази даних тощо. Помилка вказує на те, що функції передано 5 позиційних аргументів, тоді як вона приймає від 2 до 3 таких аргументів.
Щоб виправити цю проблему, необхідно змінити рядок коду, який призводить до помилки. Перепишемо його наступним чином:
1 |
CHANNELS = [int(ch) if id_pattern.search(ch) else ch for ch in environ.get('CHANNELS', '-1001759xxxxxx,-1001996xxxxxx,-1002089xxxxxx').split(',')] |
Виправлений код розділяє рядок каналів за допомогою коми та передає цей рядок до функції
1 |
split() |
, щоб отримати список каналів. Потім він перетворює кожен канал у ціле число за допомогою
1 |
int() |
, якщо це можливо.
Після внесення цих змін збережіть файл
1 |
info.py |
та перезапустіть ваш Telegram бот на VPS. Це має вирішити проблему з TypeError та дозволить вашому боту коректно працювати з вказаними каналами.