help@rskworld.in +91 93305 39277
RSK World
  • Home
  • Development
    • Web Development
    • Mobile Apps
    • Software
    • Games
    • Project
  • Technologies
    • Data Science
    • AI Development
    • Cloud Development
    • Blockchain
    • Cyber Security
    • Dev Tools
    • Testing Tools
  • Blog
  • About
  • Contact

Theme Settings

Color Scheme
Display Options
Font Size
100%
Back to Project
RSK World
multi-language-chatbot
/
templates
RSK World
multi-language-chatbot
Multi-language Chatbot - Python + Flask + OpenAI API + NLP + Translation + Language Detection + Cultural Adaptation
templates
  • index.html12.6 KB
app.pyindex.html
app.py
Raw Download
Find: Go to:
#!/usr/bin/env python3
"""
Multi-language Chatbot Application
Author: RSK World (https://rskworld.in)
Founder: Molla Samser
Designer & Tester: Rima Khatun
Contact: help@rskworld.in, +91 93305 39277
Year: 2026
Description: Advanced multi-language chatbot with automatic translation and cultural adaptation
"""

from flask import Flask, render_template, request, jsonify, session
from flask_cors import CORS
import openai
import googletrans
from langdetect import detect
import json
import os
import tempfile
import base64
from datetime import datetime
import logging

from modules.language_detector import LanguageDetector
from modules.translator import Translator
from modules.cultural_adapter import CulturalAdapter
from modules.chatbot_core import ChatbotCore
from modules.voice_processor import VoiceProcessor
from modules.sentiment_analyzer import SentimentAnalyzer
from modules.conversation_memory import ConversationMemory
from modules.document_analyzer import DocumentAnalyzer
from modules.collaboration_manager import CollaborationManager
from modules.analytics_engine import AnalyticsEngine
from modules.personality_engine import PersonalityEngine
from modules.multimodal_processor import MultiModalProcessor

app = Flask(__name__)
app.secret_key = 'multi-language-chatbot-rsk-world-2026'
CORS(app)

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

class MultiLanguageChatbot:
    def __init__(self):
        self.language_detector = LanguageDetector()
        self.translator = Translator()
        self.cultural_adapter = CulturalAdapter()
        self.chatbot_core = ChatbotCore()
        
        # Advanced features
        self.voice_processor = VoiceProcessor()
        self.sentiment_analyzer = SentimentAnalyzer()
        self.conversation_memory = ConversationMemory()
        self.document_analyzer = DocumentAnalyzer()
        self.collaboration_manager = CollaborationManager()
        self.analytics_engine = AnalyticsEngine()
        self.personality_engine = PersonalityEngine()
        self.multimodal_processor = MultiModalProcessor()
        
        # Supported languages
        self.supported_languages = {
            'en': 'English',
            'hi': 'हिन्दी (Hindi)',
            'bn': 'বাংলা (Bengali)',
            'es': 'Español (Spanish)',
            'fr': 'Français (French)',
            'de': 'Deutsch (German)',
            'zh': '中文 (Chinese)',
            'ja': '日本語 (Japanese)',
            'ar': 'العربية (Arabic)',
            'pt': 'Português (Portuguese)',
            'ru': 'Русский (Russian)',
            'it': 'Italiano (Italian)'
        }
        
    def process_message(self, message, user_language=None):
        """Process incoming message and generate response"""
        try:
            # Detect language if not provided
            if not user_language:
                detected_lang = self.language_detector.detect(message)
                user_language = detected_lang if detected_lang in self.supported_languages else 'en'
            else:
                # If user_language is provided, still detect for analytics
                detected_lang = self.language_detector.detect(message)
                if detected_lang not in self.supported_languages:
                    detected_lang = user_language
            
            # Store user language in session
            session['user_language'] = user_language
            
            # Translate to English for processing if needed
            if user_language != 'en':
                message_en = self.translator.translate(message, 'en', user_language)
            else:
                message_en = message
            
            # Generate response in English
            response_en = self.chatbot_core.generate_response(message_en)
            
            # Apply cultural adaptation
            response_en = self.cultural_adapter.adapt(response_en, user_language)
            
            # Translate response back to user language
            if user_language != 'en':
                response = self.translator.translate(response_en, user_language, 'en')
            else:
                response = response_en
            
            # Track analytics
            self.analytics_engine.track_user_event(
                user_id='default',
                event_type='message',
                event_data={'message_length': len(message)},
                language=detected_lang
            )
            
            # Store in conversation memory
            self.conversation_memory.add_message(
                user_id='default',
                role='user',
                content=message,
                language=detected_lang,
                sentiment=None
            )
            
            return {
                'response': response,
                'detected_language': user_language,
                'language_name': self.supported_languages.get(user_language, 'English'),
                'confidence': self.language_detector.get_confidence()
            }
            
        except Exception as e:
            logger.error(f"Error processing message: {str(e)}")
            return {
                'response': f"Sorry, I encountered an error. Please try again. (Error: {str(e)})",
                'detected_language': 'en',
                'language_name': 'English',
                'confidence': 0.0
            }

chatbot = MultiLanguageChatbot()

@app.route('/')
def index():
    """Main chat interface"""
    return render_template('index.html', 
                         supported_languages=chatbot.supported_languages,
                         current_year=datetime.now().year)

@app.route('/chat', methods=['POST'])
def chat():
    """Handle chat messages"""
    try:
        data = request.get_json()
        message = data.get('message', '').strip()
        user_language = data.get('language', None)
        
        if not message:
            return jsonify({'error': 'Message cannot be empty'}), 400
        
        response = chatbot.process_message(message, user_language)
        return jsonify(response)
        
    except Exception as e:
        logger.error(f"Chat endpoint error: {str(e)}")
        return jsonify({'error': 'Internal server error'}), 500

@app.route('/detect_language', methods=['POST'])
def detect_language():
    """Detect language of given text"""
    try:
        data = request.get_json()
        text = data.get('text', '').strip()
        
        if not text:
            return jsonify({'error': 'Text cannot be empty'}), 400
        
        detected_lang = chatbot.language_detector.detect(text)
        confidence = chatbot.language_detector.get_confidence()
        
        return jsonify({
            'language': detected_lang,
            'language_name': chatbot.supported_languages.get(detected_lang, 'Unknown'),
            'confidence': confidence
        })
        
    except Exception as e:
        logger.error(f"Language detection error: {str(e)}")
        return jsonify({'error': 'Language detection failed'}), 500

@app.route('/translate', methods=['POST'])
def translate_text():
    """Translate text between languages"""
    try:
        data = request.get_json()
        text = data.get('text', '').strip()
        target_lang = data.get('target_language', 'en')
        source_lang = data.get('source_language', 'auto')
        
        if not text:
            return jsonify({'error': 'Text cannot be empty'}), 400
        
        translated_text = chatbot.translator.translate(text, target_lang, source_lang)
        
        return jsonify({
            'translated_text': translated_text,
            'source_language': source_lang,
            'target_language': target_lang
        })
        
    except Exception as e:
        logger.error(f"Translation error: {str(e)}")
        return jsonify({'error': 'Translation failed'}), 500

@app.route('/languages')
def get_supported_languages():
    """Get list of supported languages"""
    return jsonify(chatbot.supported_languages)

@app.route('/health')
def health_check():
    """Health check endpoint"""
    return jsonify({
        'status': 'healthy',
        'timestamp': datetime.now().isoformat(),
        'version': '2.0.0',
        'features': [
            'voice_processing',
            'sentiment_analysis',
            'conversation_memory',
            'document_analysis',
            'collaboration',
            'analytics',
            'personality_customization',
            'multimodal_input'
        ]
    })

# Advanced Feature Endpoints

@app.route('/voice/speech-to-text', methods=['POST'])
def speech_to_text():
    """Convert speech to text"""
    try:
        if 'audio' not in request.files:
            return jsonify({'error': 'No audio file provided'}), 400
        
        audio_file = request.files['audio']
        language = request.form.get('language', 'en')
        
        # Save audio temporarily
        with tempfile.NamedTemporaryFile(delete=False, suffix='.wav') as temp_file:
            audio_file.save(temp_file.name)
            
            # Process audio
            text = chatbot.voice_processor.recognize_speech_from_file(temp_file.name, language)
            
            # Clean up
            os.unlink(temp_file.name)
        
        if text:
            return jsonify({
                'text': text,
                'language': language,
                'confidence': 0.85
            })
        else:
            return jsonify({'error': 'Could not recognize speech'}), 400
            
    except Exception as e:
        logger.error(f"Speech to text error: {str(e)}")
        return jsonify({'error': 'Speech recognition failed'}), 500

@app.route('/voice/text-to-speech', methods=['POST'])
def text_to_speech():
    """Convert text to speech"""
    try:
        data = request.get_json()
        text = data.get('text', '').strip()
        language = data.get('language', 'en')
        
        if not text:
            return jsonify({'error': 'Text cannot be empty'}), 400
        
        # Generate speech
        audio_bytes = chatbot.voice_processor.text_to_speech(text, language)
        
        if audio_bytes:
            audio_base64 = base64.b64encode(audio_bytes).decode('utf-8')
            return jsonify({
                'audio': audio_base64,
                'format': 'wav',
                'language': language
            })
        else:
            return jsonify({'error': 'Speech generation failed'}), 500
            
    except Exception as e:
        logger.error(f"Text to speech error: {str(e)}")
        return jsonify({'error': 'Speech generation failed'}), 500

@app.route('/sentiment/analyze', methods=['POST'])
def analyze_sentiment():
    """Analyze sentiment of text"""
    try:
        data = request.get_json()
        text = data.get('text', '').strip()
        language = data.get('language', 'en')
        
        if not text:
            return jsonify({'error': 'Text cannot be empty'}), 400
        
        # Analyze sentiment
        sentiment_result = chatbot.sentiment_analyzer.analyze_sentiment(text, language)
        emotion_result = chatbot.sentiment_analyzer.detect_emotions(text, language)
        
        return jsonify({
            'sentiment': sentiment_result,
            'emotions': emotion_result,
            'text': text,
            'language': language
        })
        
    except Exception as e:
        logger.error(f"Sentiment analysis error: {str(e)}")
        return jsonify({'error': 'Sentiment analysis failed'}), 500

@app.route('/memory/conversation', methods=['GET'])
def get_conversation_memory():
    """Get conversation history"""
    try:
        user_id = request.args.get('user_id', 'default')
        limit = int(request.args.get('limit', 20))
        
        history = chatbot.conversation_memory.get_conversation_history(user_id, limit)
        
        return jsonify({
            'user_id': user_id,
            'history': history,
            'count': len(history)
        })
        
    except Exception as e:
        logger.error(f"Conversation memory error: {str(e)}")
        return jsonify({'error': 'Failed to get conversation history'}), 500

@app.route('/document/analyze', methods=['POST'])
def analyze_document():
    """Analyze uploaded document"""
    try:
        if 'file' not in request.files:
            return jsonify({'error': 'No file provided'}), 400
        
        file = request.files['file']
        user_id = request.form.get('user_id', 'default')
        
        if file.filename == '':
            return jsonify({'error': 'No file selected'}), 400
        
        # Check if file format is supported
        if not chatbot.document_analyzer.is_supported_format(file.filename):
            return jsonify({'error': 'Unsupported file format'}), 400
        
        # Read file bytes
        file_bytes = file.read()
        
        # Analyze document
        result = chatbot.document_analyzer.analyze_document_from_bytes(
            file_bytes, file.filename, user_id
        )
        
        return jsonify(result)
        
    except Exception as e:
        logger.error(f"Document analysis error: {str(e)}")
        return jsonify({'error': 'Document analysis failed'}), 500

@app.route('/collaboration/rooms', methods=['GET'])
def get_collaboration_rooms():
    """Get available collaboration rooms"""
    try:
        rooms = chatbot.collaboration_manager.get_public_rooms()
        return jsonify({'rooms': rooms})
        
    except Exception as e:
        logger.error(f"Collaboration rooms error: {str(e)}")
        return jsonify({'error': 'Failed to get rooms'}), 500

@app.route('/collaboration/room/create', methods=['POST'])
def create_collaboration_room():
    """Create new collaboration room"""
    try:
        data = request.get_json()
        name = data.get('name', '').strip()
        creator_id = data.get('creator_id', 'default')
        description = data.get('description', '')
        is_public = data.get('is_public', True)
        
        if not name:
            return jsonify({'error': 'Room name cannot be empty'}), 400
        
        result = chatbot.collaboration_manager.create_room(
            name, creator_id, description, is_public
        )
        
        return jsonify(result)
        
    except Exception as e:
        logger.error(f"Create room error: {str(e)}")
        return jsonify({'error': 'Failed to create room'}), 500

@app.route('/analytics/dashboard', methods=['GET'])
def get_analytics_dashboard():
    """Get analytics dashboard data"""
    try:
        days = int(request.args.get('days', 7))
        
        # Get various analytics
        user_analytics = chatbot.analytics_engine.get_user_analytics(days=days)
        conversation_analytics = chatbot.analytics_engine.get_conversation_analytics(days=days)
        system_analytics = chatbot.analytics_engine.get_system_analytics(days=days)
        real_time_metrics = chatbot.analytics_engine.get_real_time_metrics()
        
        return jsonify({
            'user_analytics': user_analytics,
            'conversation_analytics': conversation_analytics,
            'system_analytics': system_analytics,
            'real_time_metrics': real_time_metrics,
            'period_days': days
        })
        
    except Exception as e:
        logger.error(f"Analytics dashboard error: {str(e)}")
        return jsonify({'error': 'Failed to get analytics'}), 500

@app.route('/personality/profiles', methods=['GET'])
def get_personality_profiles():
    """Get available personality profiles"""
    try:
        profiles = chatbot.personality_engine.get_available_profiles()
        current_profile = chatbot.personality_engine.get_current_profile()
        
        return jsonify({
            'available_profiles': profiles,
            'current_profile': current_profile
        })
        
    except Exception as e:
        logger.error(f"Personality profiles error: {str(e)}")
        return jsonify({'error': 'Failed to get profiles'}), 500

@app.route('/personality/set', methods=['POST'])
def set_personality_profile():
    """Set personality profile"""
    try:
        data = request.get_json()
        profile_id = data.get('profile_id')
        user_id = data.get('user_id', 'default')
        
        if not profile_id:
            return jsonify({'error': 'Profile ID is required'}), 400
        
        result = chatbot.personality_engine.set_personality_profile(profile_id, user_id)
        
        return jsonify(result)
        
    except Exception as e:
        logger.error(f"Set personality error: {str(e)}")
        return jsonify({'error': 'Failed to set personality'}), 500

@app.route('/multimodal/process', methods=['POST'])
def process_multimodal_input():
    """Process multi-modal input"""
    try:
        data = request.get_json()
        input_type = data.get('type')
        content = data.get('content')
        metadata = data.get('metadata', {})
        user_id = data.get('user_id', 'default')
        
        if not input_type or not content:
            return jsonify({'error': 'Input type and content are required'}), 400
        
        # Validate input
        validation = chatbot.multimodal_processor.validate_input(data)
        if not validation['is_valid']:
            return jsonify({
                'error': 'Invalid input',
                'details': validation['errors']
            }), 400
        
        # Process input
        result = chatbot.multimodal_processor.process_input(data, user_id)
        
        return jsonify(result)
        
    except Exception as e:
        logger.error(f"Multi-modal processing error: {str(e)}")
        return jsonify({'error': 'Multi-modal processing failed'}), 500

if __name__ == '__main__':
    # Load configuration
    from config import get_config
    
    config_class = get_config()
    app.config.from_object(config_class)
    config_class.init_app(app)
    
    # Load environment variables
    openai.api_key = os.getenv('OPENAI_API_KEY') or config_class.OPENAI_API_KEY
    
    if not openai.api_key:
        logger.warning("OpenAI API key not found. Please set OPENAI_API_KEY environment variable.")
    
    app.run(debug=config_class.DEBUG, host=config_class.HOST, port=config_class.PORT)
519 lines•18.5 KB
python
templates/index.html
Raw Download
Find: Go to:
<!DOCTYPE html>
<html lang="en">
<head>
    <!--
    Multi-language Chatbot Interface
    Author: RSK World (https://rskworld.in)
    Founder: Molla Samser
    Designer & Tester: Rima Khatun
    Contact: help@rskworld.in, +91 93305 39277
    Year: 2026
    Description: Modern web interface for multi-language chatbot
    -->
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Multi-language Chatbot - RSK World</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
</head>
<body>
    <!-- Header -->
    <header class="bg-gradient-primary text-white py-3 shadow-sm">
        <div class="container">
            <div class="row align-items-center">
                <div class="col-md-6">
                    <h1 class="h3 mb-0">
                        <i class="fas fa-globe me-2"></i>
                        Multi-language Chatbot
                    </h1>
                    <p class="mb-0 opacity-75">Powered by RSK World</p>
                </div>
                <div class="col-md-6 text-md-end">
                    <span class="small">
                        <i class="fas fa-code me-1"></i>
                        Advanced NLP & Translation Technology
                    </span>
                </div>
            </div>
        </div>
    </header>

    <!-- Main Content -->
    <main class="container-fluid py-4">
        <div class="row">
            <!-- Sidebar -->
            <div class="col-lg-3 col-md-4 mb-4">
                <div class="card shadow-sm">
                    <div class="card-header bg-light">
                        <h5 class="card-title mb-0">
                            <i class="fas fa-cog me-2"></i>
                            Settings
                        </h5>
                    </div>
                    <div class="card-body">
                        <!-- Language Selection -->
                        <div class="mb-4">
                            <label for="languageSelect" class="form-label fw-semibold">
                                <i class="fas fa-language me-1"></i>
                                Preferred Language
                            </label>
                            <select class="form-select" id="languageSelect">
                                <option value="auto">Auto-detect</option>
                                {% for code, name in supported_languages.items() %}
                                <option value="{{ code }}">{{ name }}</option>
                                {% endfor %}
                            </select>
                        </div>

                        <!-- Features -->
                        <div class="mb-4">
                            <h6 class="fw-semibold mb-3">
                                <i class="fas fa-star me-1"></i>
                                Features
                            </h6>
                            <ul class="list-unstyled small">
                                <li class="mb-2">
                                    <i class="fas fa-check text-success me-2"></i>
                                    Multi-language support
                                </li>
                                <li class="mb-2">
                                    <i class="fas fa-check text-success me-2"></i>
                                    Auto translation
                                </li>
                                <li class="mb-2">
                                    <i class="fas fa-check text-success me-2"></i>
                                    Language detection
                                </li>
                                <li class="mb-2">
                                    <i class="fas fa-check text-success me-2"></i>
                                    Cultural adaptation
                                </li>
                                <li class="mb-2">
                                    <i class="fas fa-check text-success me-2"></i>
                                    Language switching
                                </li>
                            </ul>
                        </div>

                        <!-- Stats -->
                        <div class="mb-4">
                            <h6 class="fw-semibold mb-3">
                                <i class="fas fa-chart-bar me-1"></i>
                                Session Stats
                            </h6>
                            <div class="row g-2 text-center">
                                <div class="col-6">
                                    <div class="bg-light rounded p-2">
                                        <div class="fw-bold" id="messageCount">0</div>
                                        <div class="small text-muted">Messages</div>
                                    </div>
                                </div>
                                <div class="col-6">
                                    <div class="bg-light rounded p-2">
                                        <div class="fw-bold" id="languageCount">0</div>
                                        <div class="small text-muted">Languages</div>
                                    </div>
                                </div>
                            </div>
                        </div>

                        <!-- Actions -->
                        <div class="d-grid gap-2">
                            <button class="btn btn-outline-primary btn-sm" onclick="clearChat()">
                                <i class="fas fa-trash me-1"></i>
                                Clear Chat
                            </button>
                            <button class="btn btn-outline-secondary btn-sm" onclick="exportChat()">
                                <i class="fas fa-download me-1"></i>
                                Export Chat
                            </button>
                        </div>
                    </div>
                </div>

                <!-- Info Card -->
                <div class="card shadow-sm mt-3">
                    <div class="card-body">
                        <h6 class="fw-semibold mb-2">
                            <i class="fas fa-info-circle me-1"></i>
                            About
                        </h6>
                        <p class="small text-muted mb-2">
                            This advanced chatbot supports multiple languages with automatic detection and translation. Features include cultural adaptation for global applications.
                        </p>
                        <div class="small">
                            <strong>Technologies:</strong><br>
                            Python, OpenAI API, Translation APIs, NLP
                        </div>
                    </div>
                </div>
            </div>

            <!-- Chat Area -->
            <div class="col-lg-9 col-md-8">
                <div class="card shadow-sm h-100">
                    <div class="card-header bg-light d-flex justify-content-between align-items-center">
                        <h5 class="card-title mb-0">
                            <i class="fas fa-comments me-2"></i>
                            Chat Interface
                        </h5>
                        <div class="d-flex align-items-center">
                            <span class="badge bg-success me-2" id="statusBadge">
                                <i class="fas fa-circle me-1"></i>
                                Online
                            </span>
                            <span class="small text-muted" id="currentLanguage">
                                English
                            </span>
                        </div>
                    </div>
                    
                    <!-- Chat Messages -->
                    <div class="card-body p-0">
                        <div id="chatMessages" class="chat-messages">
                            <div class="text-center text-muted py-5">
                                <i class="fas fa-robot fa-3x mb-3 opacity-50"></i>
                                <p class="mb-0">Start a conversation in any language!</p>
                                <small>I'll detect your language and respond accordingly.</small>
                            </div>
                        </div>
                    </div>

                    <!-- Input Area -->
                    <div class="card-footer bg-light">
                        <div class="input-group">
                            <input 
                                type="text" 
                                class="form-control" 
                                id="messageInput" 
                                placeholder="Type your message in any language..."
                                onkeypress="handleKeyPress(event)"
                            >
                            <button class="btn btn-primary" onclick="sendMessage()">
                                <i class="fas fa-paper-plane me-1"></i>
                                Send
                            </button>
                        </div>
                        
                        <!-- Quick Actions -->
                        <div class="mt-3 d-flex flex-wrap gap-2">
                            <button class="btn btn-sm btn-outline-secondary" onclick="insertText('Hello, how are you?')">
                                <i class="fas fa-hand-wave me-1"></i>
                                Greeting
                            </button>
                            <button class="btn btn-sm btn-outline-secondary" onclick="insertText('What can you do?')">
                                <i class="fas fa-question me-1"></i>
                                Capabilities
                            </button>
                            <button class="btn btn-sm btn-outline-secondary" onclick="insertText('Thank you for your help')">
                                <i class="fas fa-heart me-1"></i>
                                Thanks
                            </button>
                            <button class="btn btn-sm btn-outline-secondary" onclick="detectLanguage()">
                                <i class="fas fa-language me-1"></i>
                                Detect Language
                            </button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </main>

    <!-- Footer -->
    <footer class="bg-dark text-white py-4 mt-5">
        <div class="container">
            <div class="row">
                <div class="col-md-6">
                    <h6 class="mb-2">Multi-language Chatbot</h6>
                    <p class="small mb-0">
                        Advanced NLP chatbot with multi-language support and cultural adaptation.
                    </p>
                </div>
                <div class="col-md-6 text-md-end">
                    <p class="small mb-0">
                        © {{ current_year }} RSK World. All rights reserved.<br>
                        <i class="fas fa-envelope me-1"></i>
                        help@rskworld.in | 
                        <i class="fas fa-phone me-1"></i>
                        +91 93305 39277
                    </p>
                </div>
            </div>
        </div>
    </footer>

    <!-- Loading Modal -->
    <div class="modal fade" id="loadingModal" tabindex="-1" data-bs-backdrop="static" data-bs-keyboard="false">
        <div class="modal-dialog modal-sm modal-dialog-centered">
            <div class="modal-content">
                <div class="modal-body text-center py-4">
                    <div class="spinner-border text-primary mb-3" role="status">
                        <span class="visually-hidden">Processing...</span>
                    </div>
                    <p class="mb-0">Processing your message...</p>
                </div>
            </div>
        </div>
    </div>

    <!-- Scripts -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
    <script src="{{ url_for('static', filename='js/chatbot.js') }}"></script>
</body>
</html>
267 lines•12.6 KB
markup
🚀 Support RSK World

Subscribe to our YouTube channel for latest tutorials & updates!



Click subscribe & support our work ❤️

About RSK World

Founded by Molla Samser, with Designer & Tester Rima Khatun, RSK World is your one-stop destination for free programming resources, source code, and development tools.

Founder: Molla Samser
Designer & Tester: Rima Khatun

Development

  • Game Development
  • Web Development
  • Mobile Development
  • AI Development
  • Development Tools

Legal

  • Terms & Conditions
  • Privacy Policy
  • Disclaimer

Contact Info

Nutanhat, Mongolkote
Purba Burdwan, West Bengal
India, 713147

+91 93305 39277

hello@rskworld.in
support@rskworld.in

© 2026 RSK World. All rights reserved.

Content used for educational purposes only. View Disclaimer