Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка в коде тг бота

Наталья Хавроненко Ученик (167), на голосовании 2 недели назад
Ошибка
Traceback (most recent call last):
File "c:\Users\Maksim\Desktop\bot\import telebot.py", line 29, in <module>
bot.polling(none_stop=True, interval=0)
File "C:\Users\Maksim\AppData\Local\Programs\Python\Python312\Lib\site-packages\telebot\__init__.py", line 1104, in polling
self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout,
File "C:\Users\Maksim\AppData\Local\Programs\Python\Python312\Lib\site-packages\telebot\__init__.py", line 1179, in __threaded_polling
raise e
File "C:\Users\Maksim\AppData\Local\Programs\Python\Python312\Lib\site-packages\telebot\__init__.py", line 1141, in __threaded_polling
self.worker_pool.raise_exceptions()
File "C:\Users\Maksim\AppData\Local\Programs\Python\Python312\Lib\site-packages\telebot\util.py", line 149, in raise_exceptions
raise self.exception_info
File "C:\Users\Maksim\AppData\Local\Programs\Python\Python312\Lib\site-packages\telebot\util.py", line 92, in run
task(*args, **kwargs)
File "C:\Users\Maksim\AppData\Local\Programs\Python\Python312\Lib\site-packages\telebot\__init__.py", line 7868, in _run_middlewares_and_handler
result = handler['function'](message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: send_another_joke() takes 0 positional arguments but 1 was given
Дополнен 1 месяц назад
 import telebot
from random import randint


bot = telebot.TeleBot('6739252290:AAHxOkOkoKMtrUCji7a-kPPU9psjsWqwfwv8')

user_messages = ['Привет','Как дела?','Расскажи анекдот']

@bot.message_handler(content_types=['text'])
def send_another_joke():
random_number = randint(0,3)
joker = ['— Говорят, одна беда на двоих - это пол беды.— Жаль, но со спидом это немного по-другому работает',
'Шёл однажды вдоль железной дороги и вдруг вижу — поезд сбивает черного парня. Моя первая мысль Чёрт, это же мог быть я!Устроился машинистом на следующий же день.',
'Две вещи не стареют — черный юмор и невакцинированные дети.',
'Соседский пацан вызвал меня на бой из водяных пистолетов. Я просто пишу это сообщение, пока вода в кастрюле закипает.' ]
return joker[random_number]

def send_all_commands(message):
if message.text == '/help':
bot.send_message(message.chat.id, f'Я могу отправить следующие команды \n {"".join(user_messages)}')
elif message.text == 'Привет':
bot.send_message(message.chat.id, 'Привет меня звать JaBka, я здесь главный')
elif message.text == 'Как дела?':
bot.send_message(message.chat.id, 'Лучше чем у тебя')
elif message.text == 'Расскажи анекдот':
bot.send_message(message.chat.id, '— Санек, ты странный, конечно. — Почему это я странный? — Живешь возле кладбища, а к чаю ничего нет.')
elif message.text == 'Другой':
bot.send_message(message.chat.id, send_another_joke())
bot.polling(none_stop=True, interval=0)
Голосование за лучший ответ
Ptitsa Ptitsa Мастер (1685) 1 месяц назад
Попробуй так
 import telebot 
from random import randint


bot = telebot.TeleBot('6739252290:AAHxOkOkoKMtrUCji7a-kPPU9psjsWqwfwv8')

user_messages = ['Привет','Как дела?','Расскажи анекдот']

def send_another_joke():
random_number = randint(0,3)
joker = ['— Говорят, одна беда на двоих - это пол беды.— Жаль, но со спидом это немного по-другому работает',
'Шёл однажды вдоль железной дороги и вдруг вижу — поезд сбивает черного парня. Моя первая мысль Чёрт, это же мог быть я!Устроился машинистом на следующий же день.',
'Две вещи не стареют — черный юмор и невакцинированные дети.',
'Соседский пацан вызвал меня на бой из водяных пистолетов. Я просто пишу это сообщение, пока вода в кастрюле закипает.' ]
return joker[random_number]

@bot.message_handler(content_types=['text'])
def send_all_commands(message):
if message.text == '/help':
bot.send_message(message.chat.id, f'Я могу отправить следующие команды \n {"".join(user_messages)}')
elif message.text == 'Привет':
bot.send_message(message.chat.id, 'Привет меня звать JaBka, я здесь главный')
elif message.text == 'Как дела?':
bot.send_message(message.chat.id, 'Лучше чем у тебя')
elif message.text == 'Расскажи анекдот':
bot.send_message(message.chat.id, '— Санек, ты странный, конечно. — Почему это я странный? — Живешь возле кладбища, а к чаю ничего нет.')
elif message.text == 'Другой':
bot.send_message(message.chat.id, send_another_joke())

bot.polling(none_stop=True, interval=0)
Chudo_Chudnoe Мастер (1950) 1 месяц назад
И так тоже попробуй)


 import telebot 
from random import randint

bot = telebot.TeleBot('твой_ключ_и_не_показывай_его_никому')


user_messages = ['Привет', 'Как дела?', 'Расскажи анекдот']

@bot.message_handler(content_types=['text'])
def send_all_commands(message):
if message.text == '/help':
bot.send_message(message.chat.id, f'Я могу отправить следующие команды \n {" ".join(user_messages)}')
elif message.text == 'Привет':
bot.send_message(message.chat.id, 'Привет, меня зовут JaBka, я здесь главный.')
elif message.text == 'Как дела?':
bot.send_message(message.chat.id, 'Лучше, чем у тебя.')
elif message.text == 'Расскажи анекдот':
bot.send_message(message.chat.id, send_another_joke(message)) # Теперь передача message в функцию
elif message.text == 'Другой':
bot.send_message(message.chat.id, send_another_joke(message)) # И тут передача message в функцию

def send_another_joke(message): # А тут добавлен аргумент message
joker = [
'— Говорят, одна беда на двоих - это полбеды. — Жаль, но со спидом это немного по-другому работает.',
'Шёл однажды вдоль железной дороги и вдруг вижу — поезд сбивает черного парня. Моя первая мысль: "Чёрт, это же мог быть я!" Устроился машинистом на следующий же день.',
'Две вещи не стареют — черный юмор и невакцинированные дети.',
'Соседский пацан вызвал меня на бой из водяных пистолетов. Я просто пишу это сообщение, пока вода в кастрюле закипает.'
]
random_number = randint(0, len(joker)-1) # Теперь корректное генерирование индекса
return joker[random_number]

# Запуск бота
bot.polling(none_stop=True, interval=0)
send_another_joke теперь принимает аргумент message, который у тебя не используется внутри функции, но его наличие необходимо для соответствия интерфейсу обработчика сообщений telebot.

Также поправил генерирование случайного индекса для списка анекдотов, чтобы избежать ошибок индексации =)
Похожие вопросы