Created base BE. Auth + /current endpoint

This commit is contained in:
AddictionGames
2026-01-03 15:34:33 +02:00
parent bff056e094
commit 27a261eb44
30 changed files with 1998 additions and 22 deletions

235
TELEGRAM_SETUP.md Normal file
View File

@@ -0,0 +1,235 @@
# Telegram Bot and Mini App Setup Guide
This guide explains how to set up a Telegram bot and mini app for the Honey project.
## Step 1: Create a Telegram Bot
1. **Open Telegram** and search for **@BotFather**
2. **Start a conversation** with BotFather:
```
/start
```
3. **Create a new bot**:
```
/newbot
```
4. **Follow the prompts**:
- Enter a name for your bot (e.g., "Honey Bot")
- Enter a username for your bot (must end with `bot`, e.g., "honey_bot")
5. **Save the Bot Token**:
- BotFather will provide you with a token like: `1234567890:ABCdefGHIjklMNOpqrsTUVwxyz`
- **IMPORTANT**: Keep this token secret! It's used to authenticate your bot
- Add this token to your backend environment variables as `TELEGRAM_BOT_TOKEN`
## Step 2: Configure Bot Settings
1. **Set bot description** (optional):
```
/setdescription
```
Select your bot and enter a description.
2. **Set bot commands** (optional):
```
/setcommands
```
Select your bot and enter commands (e.g., `/start - Start the bot`)
3. **Set bot photo** (optional):
```
/setuserpic
```
Select your bot and upload a photo.
## Step 3: Create a Mini App
1. **Open BotFather** and select your bot
2. **Create a new mini app**:
```
/newapp
```
3. **Follow the prompts**:
- Select your bot
- Enter a title for your mini app (e.g., "Honey")
- Enter a short name (e.g., "honey")
- Enter a description
- Upload an icon (512x512 PNG, max 100KB)
- Upload a photo (640x360 JPG/PNG, max 5MB) - optional
- Upload a GIF (640x360, max 1MB) - optional
4. **Set the Mini App URL**:
- BotFather will ask for the Web App URL
- For **Railway deployment**: Use your Railway frontend URL
```
https://your-frontend.railway.app
```
- For **Inferno deployment**: Use your domain
```
https://your-domain.com
```
- For **local development**: Use a tunnel service like ngrok
```
https://your-ngrok-url.ngrok.io
```
5. **Save the Mini App Link**:
- BotFather will provide you with a link like: `https://t.me/your_bot/honey`
- This is the link users will use to open your mini app
## Step 4: Configure Web App Settings
### For Railway Deployment
1. **Get your frontend URL** from Railway:
- Go to your frontend service in Railway
- Go to **"Settings"** → **"Networking"**
- Copy the generated domain (e.g., `https://honey-fe-production.up.railway.app`)
2. **Update BotFather** with this URL:
```
/newapp
```
Select your bot and update the Web App URL
### For Inferno Deployment
1. **Get your domain** (e.g., `https://honey.yourdomain.com`)
2. **Update BotFather** with this URL:
```
/newapp
```
Select your bot and update the Web App URL
### For Local Development
1. **Use ngrok** to create a tunnel:
```bash
ngrok http 5173
```
2. **Copy the HTTPS URL** (e.g., `https://abc123.ngrok.io`)
3. **Update BotFather** with this URL:
```
/newapp
```
Select your bot and update the Web App URL
4. **Update your frontend** `.env` file:
```env
VITE_API_BASE_URL=https://your-backend-url.railway.app
```
## Step 5: Test the Mini App
1. **Open Telegram** and search for your bot (e.g., `@honey_bot`)
2. **Start the bot**:
```
/start
```
3. **Open the mini app**:
- Click the button in the bot chat (if you added one)
- Or use the link: `https://t.me/your_bot/honey`
- Or use the menu button (if configured)
4. **Verify authentication**:
- The mini app should load your frontend
- The frontend should successfully authenticate with the backend
- Check browser console for any errors
## Step 6: Configure Bot Menu (Optional)
You can add a menu button to your bot that opens the mini app:
1. **Open BotFather**:
```
/mybots
```
2. **Select your bot**:
```
Bot Settings → Menu Button
```
3. **Configure menu button**:
- Select "Configure Menu Button"
- Enter button text (e.g., "Open Honey")
- Enter the mini app URL or select from your apps
## Step 7: Security Considerations
1. **Keep Bot Token Secret**:
- Never commit the bot token to version control
- Use environment variables or secret files (as configured in the backend)
2. **Validate initData**:
- The backend automatically validates Telegram's `initData` signature
- This ensures requests are coming from legitimate Telegram users
3. **HTTPS Required**:
- Telegram mini apps require HTTPS
- Use Railway's automatic HTTPS or configure SSL on Inferno
## Step 8: Troubleshooting
### Mini App Not Loading
- **Check URL**: Verify the Web App URL in BotFather matches your frontend URL
- **Check HTTPS**: Ensure your frontend is served over HTTPS
- **Check CORS**: Verify backend CORS configuration includes Telegram domains
- **Check Console**: Open browser developer tools and check for errors
### Authentication Failing
- **Check Bot Token**: Verify `TELEGRAM_BOT_TOKEN` is correct in backend environment
- **Check initData**: Verify frontend is sending `Authorization: tma <initData>` header
- **Check Backend Logs**: Review backend logs for authentication errors
### Bot Not Responding
- **Check Bot Status**: Verify bot is active in BotFather
- **Check Commands**: Verify bot commands are set correctly
- **Check Token**: Verify bot token is correct
## Additional Resources
- [Telegram Bot API Documentation](https://core.telegram.org/bots/api)
- [Telegram Mini Apps Documentation](https://core.telegram.org/bots/webapps)
- [BotFather Commands](https://core.telegram.org/bots/tools#botfather)
## Quick Reference
### BotFather Commands
```
/newbot - Create a new bot
/setdescription - Set bot description
/setcommands - Set bot commands
/newapp - Create/update mini app
/mybots - Manage your bots
```
### Environment Variables
```env
TELEGRAM_BOT_TOKEN=your_bot_token_here
FRONTEND_URL=https://your-frontend-url.com
```
### Testing Locally
1. Start backend: `mvn spring-boot:run` or `docker-compose up`
2. Start frontend: `npm run dev`
3. Use ngrok: `ngrok http 5173`
4. Update BotFather with ngrok URL
5. Test mini app in Telegram