我有一个handlers.py文件
from aiogram import F, Router
from aiogram.filters import CommandStart, Command
from aiogram.types import Message, CallbackQuery
import app.keyboards as kb
router = Router()
@router.callback_query(F.data == 'addAcc')
async def send_GetAccounts(callback: CallbackQuery, state: FSMContext):
await state.set_state(Auth.token)
await callback.message.edit_text('Введите ссылку с токеном, полученный <a href=vkhost.github.io>ЗДЕСЬ</a>:',
reply_markup=kb.GetAccount, parse_mode='html', disable_web_page_preview=True)
在这里,我希望该函数是send_GetAccounts
当机器人发送消息时Введите ссылку с токеном, полученный <a href=vkhost.github.io>ЗДЕСЬ</a>
,然后用户向机器人发送消息,然后机器人在另一个函数中使用该消息执行某些操作。我怎样才能做到这一点 ?
添加:
class Auth(StatesGroup):
token = State()
@router.callback_query(StateFilter(None), F.data == 'addAcc')
async def send_GetAccounts(callback: CallbackQuery, state: FSMContext):
await state.set_state(Auth.token)
await callback.message.edit_text('Введите ссылку с токеном, полученный <a href=vkhost.github.io>ЗДЕСЬ</a>:',
reply_markup=kb.GetAccount, parse_mode='html', disable_web_page_preview=True)
def check_token(token):
access_token_match = re.search(r'access_token=([^&]+)', token).group(1)
if access_token_match:
access_token = access_token_match.group(1)
vk_session = vk_api.VkApi(token=access_token)
try:
vk_session.auth(token_only=True)
print('Авторизация прошла успешно')
return True
except vk_api.AuthError as err_msg:
print(err_msg)
return False
@router.message(Auth.token)
async def token_inputed(message: Message, state: FSMContext):
if check_token(message.text):
await message.answer("Успешно добавлен токен!")
await state.clear()
else:
await message.answer("Некорректно введен токен!")```
这是捕获消息的方法,如下所示:
但最好在您的 send_GetAccounts 中添加一个检查,表明我们当前不需要令牌: