Не работает тг бот, ошибка "TypeError: Updater.__init__() got an unexpected keyword argument 'use_context'"
Привожу вам код:
from telegram.ext import Updater
import json
import hashlib
import time
logging.basicConfig(level=logging.INFO)
TOKEN = 'Тут мой токен' # replace with your bot token
wallet_manager = {}
blockchain = []
def start(update, context):
context.bot.send_message(chat_id=update.effective_chat.id, text='Welcome to Notcoin!')
def create_wallet(update, context):
wallet_id = hashlib.sha256(str(time.time()).encode()).hexdigest()[:10]
wallet_manager[wallet_id] = {'balance': 0, 'transactions': []}
context.bot.send_message(chat_id=update.effective_chat.id, text=f'Your wallet ID is {wallet_id}')
def send_coins(update, context):
try:
wallet_id = update.message.text.split()[1]
amount = int(update.message.text.split()[2])
if wallet_id in wallet_manager:
if wallet_manager[wallet_id]['balance'] >= amount:
wallet_manager[wallet_id]['balance'] -= amount
blockchain.append({'from': update.effective_chat.id, 'to': wallet_id, 'amount': amount})
context.bot.send_message(chat_id=update.effective_chat.id, text=f'Sent {amount} coins to {wallet_id}')
else:
context.bot.send_message(chat_id=update.effective_chat.id, text='Insufficient balance')
else:
context.bot.send_message(chat_id=update.effective_chat.id, text='Invalid wallet ID')
except Exception as e:
context.bot.send_message(chat_id=update.effective_chat.id, text=str(e))
def get_balance(update, context):
wallet_id = update.message.text.split()[1]
if wallet_id in wallet_manager:
context.bot.send_message(chat_id=update.effective_chat.id, text=f'Your balance is {wallet_manager[wallet_id]["balance"]}')
else:
context.bot.send_message(chat_id=update.effective_chat.id, text='Invalid wallet ID')
def get_transactions(update, context):
wallet_id = update.message.text.split()[1]
if wallet_id in wallet_manager:
context.bot.send_message(chat_id=update.effective_chat.id, text='\n'.join([f'{tx["from"]} -> {wallet_id}: {tx["amount"]}' for tx in wallet_manager[wallet_id]['transactions']]))
else:
context.bot.send_message(chat_id=update.effective_chat.id, text='Invalid wallet ID')
def main():
updater = Updater(TOKEN, use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler('start', start))
dp.add_handler(CommandHandler('create', create_wallet))
dp.add_handler(CommandHandler('send', send_coins))
dp.add_handler(CommandHandler('balance', get_balance))
dp.add_handler(CommandHandler('transactions', get_transactions))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
На выводе получаю:
File "e:\Python\fbs\main.py", line 67, in <module>
main()
File "e:\Python\fbs\main.py", line 53, in main
updater = Updater(TOKEN, use_context=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Updater.__init__() got an unexpected keyword argument 'use_context'
Что делал:
pip install --upgrade python-telegram-bot
updater = Updater(TOKEN) - менял, ошибка ->
File "e:\Python\main.py", line 67, in <module>
main()
File "e:\Python\main.py", line 53, in main
updater = Updater(TOKEN)
^^^^^^^^^^^^^^
TypeError: Updater.__init__() missing 1 required positional argument: 'update_queue'
Ответы (1 шт):
Автор решения: Revolucion for Monica
→ Ссылка
Какова ваша версия python-telegram-bot
?
Понизьте или обновите python-telegram-bot до соответствующей версии. Oyekunle Oyegunle понизил свою версию, используя pip install python-telegram-bot==13.7
с последней версии python-telegram-bot 20.0, и это сработало для него. Его версия может отличаться от вашей, поэтому используйте правильную версию, которая не будет вызывать ошибку