Загрузка...

Возникла ошибка в коде Python Telegram-бота, разработанного с использованием библиотеки aiogram.

Тема в разделе Python создана пользователем nightmef 6 дек 2024. 213 просмотров

  1. nightmef
    nightmef Автор темы 6 дек 2024 0 7 янв 2024
    import asyncio

    from aiogram import Bot, Dispatcher, types

    from aiogram.exceptions import TelegramAPIError

    from aiogram.utils.markdown import hbold

    import logging

    import json

    import os

    from aiogram.contrib.fsm_storage.memory import MemoryStorage



    logging.basicConfig(level=logging.INFO)



    BOT_TOKEN = "123"

    ADMIN_ID = 321

    DATA_FILE = "new_users.json"



    bot = Bot(token=BOT_TOKEN)



    storage = MemoryStorage()

    dp = Dispatcher(bot, storage=storage)



    def load_data():

    if os.path.exists(DATA_FILE):

    with open(DATA_FILE, "r", encoding='utf-8') as f:

    try:

    return json.load(f)

    except json.JSONDecodeError:

    return {}

    else:

    return {}



    def save_data(data):

    with open(DATA_FILE, "w", encoding='utf-8') as f:

    json.dump(data, f, ensure_ascii=False, indent=4)



    new_users = load_data()



    @dp.message_handler(commands=['start'])

    async def start(message: types.Message):

    username = message.from_user.first_name

    if message.from_user.username:

    username = "@" + message.from_user.username

    await message.answer(f"Привет, {hbold(username)}! \nЭто бот для демонстрации возможностей Telegram ботов. \nВы можете использовать команды /site и /website для перехода на сайт.")



    @dp.message_handler(commands=['site', 'website'])

    async def site(message: types.Message):

    markup = types.InlineKeyboardMarkup()

    btn1 = types.InlineKeyboardButton('Перейти на сайт', url='https://Funpay.com/users/***/')

    markup.add(btn1)

    await message.answer('Перейдите по ссылке:', reply_markup=markup)



    @dp.message_handler(content_types=['photo'])

    async def get_photo(message: types.Message):

    markup = types.InlineKeyboardMarkup()

    btn1 = types.InlineKeyboardButton('Перейти на сайт', url='https://Funpay.com/users/***/')

    btn2 = types.InlineKeyboardButton('Изменить текст', callback_data='edit')

    btn3 = types.InlineKeyboardButton('Удалить фото', callback_data='delete')

    markup.add(btn1, btn2, btn3)

    await message.answer('Какое красивое фото!', reply_markup=markup)



    @dp.callback_query_handler(lambda c: c.data and c.data.startswith('edit'))

    async def process_callback_edit(callback_query: types.CallbackQuery):

    try:

    await callback_query.message.edit_text('Измененный текст')

    await callback_query.answer()

    except TelegramAPIError as e:

    await callback_query.answer(f"Ошибка: {e}")

    logging.error(f"Ошибка редактирования сообщения: {e}")



    @dp.callback_query_handler(lambda c: c.data and c.data.startswith('delete'))

    async def process_callback_delete(callback_query: types.CallbackQuery):

    try:

    await bot.delete_message(callback_query.message.chat.id, callback_query.message.message_id - 1)

    await callback_query.answer()

    except TelegramAPIError as e:

    await callback_query.answer(f"Ошибка: {e}")

    logging.error(f"Ошибка удаления сообщения: {e}")



    @dp.message_handler()

    async def handle_all_messages(message: types.Message):

    user_id = message.from_user.id

    if user_id not in new_users:

    new_users[user_id] = True

    try:

    await bot.send_message(ADMIN_ID, f"Новый пользователь: {message.from_user.first_name} ({user_id}) написал: {message.text}")

    except TelegramAPIError as e:

    logging.error(f"Ошибка отправки сообщения администратору: {e}")

    logging.info(f"New user: {message.from_user.first_name} ({user_id}) sent: {message.text}")

    save_data(new_users)



    async def main():

    await dp.start_polling(skip_updates=True)



    if name == 'main':

    asyncio.run(main())
    Ошибка: line 8, in <module>
    from aiogram.contrib.fsm_storage.memory import MemoryStorage # Импортируем MemoryStorage
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ModuleNotFoundError: No module named 'aiogram.contrib.fsm_storage'
    Токены специально убрал.
     
  2. Hollywood
    Hollywood 6 дек 2024 э 20 248 28 окт 2020
    Код
    from aiogram.fsm.storage.memory import MemoryStorage
     
    6 дек 2024 Изменено
  3. Belovered
    Belovered 6 дек 2024 839 24 янв 2021
    У тебя установлен аиограм 3, поставь 2.x
     
  4. zeroshehka
    zeroshehka 9 дек 2024 Заблокирован(а) 0 9 дек 2024
    установи pip install aiogram - это для начала,

    свою ошибку библи замени на эту
    from aiogram.fsm.state import State, StatesGroup
     
Top
Загрузка...