message achoix
This commit is contained in:
+6
-6
@@ -1,12 +1,12 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"tw_acc_pseudo": "exoticnaturees",
|
"tw_acc_pseudo": "ForFunIlluminaty",
|
||||||
"tw_acc_token": "oauth:57ht6937k5du8bex534eetd1epydvg",
|
"tw_acc_token": "oauth:8ushh9h0qwywqznsulbdr66wt2xjht",
|
||||||
"charactere": "Kappa"
|
"charactere": ")"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"tw_acc_pseudo": "ForFunIlluminaty",
|
"tw_acc_pseudo": "SnowLunaSoft",
|
||||||
"tw_acc_token": "oauth:c5zoigy66klbfldh54h6kapv118mif",
|
"tw_acc_token": "oauth:l348b8e7g7srjnc8trnxjqe2i2boq2",
|
||||||
"charactere": "🤖"
|
"charactere": "Kappa"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
Submodule
+1
Submodule debug_ia_clone added at bb743c5722
@@ -1008,7 +1008,10 @@ class messageTwitch:
|
|||||||
def send_message(self, Message_text):
|
def send_message(self, Message_text):
|
||||||
try:
|
try:
|
||||||
command = '-pseudo "'+self.tw_acc_pseudo+'" -token "'+self.tw_acc_token+'" -twitchname "'+self.channel_name+'" -message " '+self.charactere+' '+Message_text+'"'
|
command = '-pseudo "'+self.tw_acc_pseudo+'" -token "'+self.tw_acc_token+'" -twitchname "'+self.channel_name+'" -message " '+self.charactere+' '+Message_text+'"'
|
||||||
message_tosend = 'python send_message.py '+ str(command)
|
|
||||||
|
# Utiliser le Python de l'environnement virtuel
|
||||||
|
python_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'env', 'bin', 'python')
|
||||||
|
message_tosend = python_path + ' send_message.py '+ str(command)
|
||||||
|
|
||||||
debug_print("d", f"send message = "+str(message_tosend), self.type_debug, self.script_name)
|
debug_print("d", f"send message = "+str(message_tosend), self.type_debug, self.script_name)
|
||||||
sprint(self.script_name,"cyan",f"send message = "+str(message_tosend))
|
sprint(self.script_name,"cyan",f"send message = "+str(message_tosend))
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,14 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import argparse
|
import argparse
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
|
# Ajouter le chemin de l'environnement virtuel
|
||||||
|
venv_path = os.path.join(os.path.dirname(__file__), 'env', 'lib', 'python3.10', 'site-packages')
|
||||||
|
if venv_path not in sys.path:
|
||||||
|
sys.path.insert(0, venv_path)
|
||||||
|
|
||||||
from pytmi import Client # Assurez-vous que c'est le nom correct de votre module et qu'il est correctement installé.
|
from pytmi import Client # Assurez-vous que c'est le nom correct de votre module et qu'il est correctement installé.
|
||||||
|
|
||||||
async def send_message_to_twitch_stream(pseudo, token, stream_url, message):
|
async def send_message_to_twitch_stream(pseudo, token, stream_url, message):
|
||||||
@@ -20,6 +28,9 @@ async def send_message_to_twitch_stream(pseudo, token, stream_url, message):
|
|||||||
# Attendre un peu avant de se déconnecter pour s'assurer que le message est envoyé
|
# Attendre un peu avant de se déconnecter pour s'assurer que le message est envoyé
|
||||||
await asyncio.sleep(2)
|
await asyncio.sleep(2)
|
||||||
print("Déconnexion...")
|
print("Déconnexion...")
|
||||||
|
except AssertionError as e:
|
||||||
|
print(f"Erreur d'assertion (client déjà connecté ou paramètres invalides): {e}")
|
||||||
|
print("Vérifiez que le token et le pseudo sont corrects")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Erreur lors de l'interaction avec Twitch: {type(e).__name__}, {e}")
|
print(f"Erreur lors de l'interaction avec Twitch: {type(e).__name__}, {e}")
|
||||||
except AttributeError as e:
|
except AttributeError as e:
|
||||||
|
|||||||
@@ -8,6 +8,20 @@ import sys
|
|||||||
import subprocess
|
import subprocess
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
|
# Configurer l'environnement Python pour l'interface web
|
||||||
|
def setup_environment():
|
||||||
|
"""Configurer l'environnement Python"""
|
||||||
|
# Ajouter le chemin de l'environnement virtuel au PYTHONPATH
|
||||||
|
venv_path = os.path.join(os.path.dirname(__file__), 'env', 'lib', 'python3.10', 'site-packages')
|
||||||
|
if venv_path not in sys.path:
|
||||||
|
sys.path.insert(0, venv_path)
|
||||||
|
print(f"✓ Environnement Python configuré: {venv_path}")
|
||||||
|
|
||||||
|
# Ajouter le répertoire courant au PYTHONPATH
|
||||||
|
current_dir = os.path.dirname(__file__)
|
||||||
|
if current_dir not in sys.path:
|
||||||
|
sys.path.insert(0, current_dir)
|
||||||
|
|
||||||
def check_dependencies():
|
def check_dependencies():
|
||||||
"""Vérifier que les dépendances sont installées"""
|
"""Vérifier que les dépendances sont installées"""
|
||||||
try:
|
try:
|
||||||
|
|||||||
+59
-1
@@ -735,5 +735,63 @@ body {
|
|||||||
|
|
||||||
.user-status.testing {
|
.user-status.testing {
|
||||||
background-color: var(--warning-color);
|
background-color: var(--warning-color);
|
||||||
animation: pulse 1s infinite;
|
}
|
||||||
|
|
||||||
|
/* Sélecteurs d'utilisateurs */
|
||||||
|
.user-selector {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-selector .form-label {
|
||||||
|
font-size: 0.875rem;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-selector .form-select {
|
||||||
|
background-color: var(--secondary-bg);
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
color: var(--text-primary);
|
||||||
|
border-radius: 6px;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-selector .form-select:focus {
|
||||||
|
background-color: var(--secondary-bg);
|
||||||
|
border-color: var(--accent-color);
|
||||||
|
color: var(--text-primary);
|
||||||
|
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-selector .form-select option {
|
||||||
|
background-color: var(--secondary-bg);
|
||||||
|
color: var(--text-primary);
|
||||||
|
padding: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Amélioration des sélecteurs dans le chat */
|
||||||
|
.chat-container .form-select {
|
||||||
|
background-color: var(--tertiary-bg);
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
color: var(--text-primary);
|
||||||
|
font-size: 0.8rem;
|
||||||
|
padding: 0.375rem 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-container .form-select:focus {
|
||||||
|
background-color: var(--tertiary-bg);
|
||||||
|
border-color: var(--accent-color);
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animation pour les sélecteurs */
|
||||||
|
.form-select {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-select:hover {
|
||||||
|
border-color: var(--accent-color);
|
||||||
|
transform: translateY(-1px);
|
||||||
}
|
}
|
||||||
+116
-36
@@ -327,12 +327,24 @@ async function savePrompts() {
|
|||||||
// Envoi d'un message personnalisé
|
// Envoi d'un message personnalisé
|
||||||
async function sendCustomMessage() {
|
async function sendCustomMessage() {
|
||||||
const message = document.getElementById('custom-message').value.trim();
|
const message = document.getElementById('custom-message').value.trim();
|
||||||
|
const userId = parseInt(document.getElementById('custom-message-user').value);
|
||||||
|
|
||||||
|
console.log('Debug - Message:', message);
|
||||||
|
console.log('Debug - User ID:', userId);
|
||||||
|
console.log('Debug - User ID type:', typeof userId);
|
||||||
|
console.log('Debug - Selector value:', document.getElementById('custom-message-user').value);
|
||||||
|
|
||||||
if (!message) {
|
if (!message) {
|
||||||
showToast('Veuillez entrer un message', 'error');
|
showToast('Veuillez entrer un message', 'error');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Vérifier si l'utilisateur est valide (pas NaN et dans la plage des utilisateurs)
|
||||||
|
if (isNaN(userId) || userId < 0 || userId >= currentUsers.length) {
|
||||||
|
showToast('Veuillez sélectionner un utilisateur valide', 'error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch(`${API_BASE}/api/send-message`, {
|
const response = await fetch(`${API_BASE}/api/send-message`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@@ -341,7 +353,8 @@ async function sendCustomMessage() {
|
|||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
message: message,
|
message: message,
|
||||||
channel: 'default'
|
channel: 'default',
|
||||||
|
user_id: userId
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -364,12 +377,19 @@ async function sendCustomMessage() {
|
|||||||
async function sendNextMessage() {
|
async function sendNextMessage() {
|
||||||
const nextMessageElement = document.getElementById('next-message');
|
const nextMessageElement = document.getElementById('next-message');
|
||||||
const message = nextMessageElement.textContent.trim();
|
const message = nextMessageElement.textContent.trim();
|
||||||
|
const userId = parseInt(document.getElementById('custom-message-user').value);
|
||||||
|
|
||||||
if (message === 'Aucun message en attente') {
|
if (message === 'Aucun message en attente') {
|
||||||
showToast('Aucun message à envoyer', 'warning');
|
showToast('Aucun message à envoyer', 'warning');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Vérifier si l'utilisateur est valide (pas NaN et dans la plage des utilisateurs)
|
||||||
|
if (isNaN(userId) || userId < 0 || userId >= currentUsers.length) {
|
||||||
|
showToast('Veuillez sélectionner un utilisateur valide', 'error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch(`${API_BASE}/api/send-message`, {
|
const response = await fetch(`${API_BASE}/api/send-message`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@@ -378,7 +398,8 @@ async function sendNextMessage() {
|
|||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
message: message,
|
message: message,
|
||||||
channel: 'default'
|
channel: 'default',
|
||||||
|
user_id: userId
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -399,6 +420,14 @@ async function sendNextMessage() {
|
|||||||
|
|
||||||
// Envoi de la dernière génération
|
// Envoi de la dernière génération
|
||||||
async function sendLastGeneration() {
|
async function sendLastGeneration() {
|
||||||
|
const userId = parseInt(document.getElementById('custom-message-user').value);
|
||||||
|
|
||||||
|
// Vérifier si l'utilisateur est valide (pas NaN et dans la plage des utilisateurs)
|
||||||
|
if (isNaN(userId) || userId < 0 || userId >= currentUsers.length) {
|
||||||
|
showToast('Veuillez sélectionner un utilisateur valide', 'error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch(`${API_BASE}/api/generations`);
|
const response = await fetch(`${API_BASE}/api/generations`);
|
||||||
const generations = await response.json();
|
const generations = await response.json();
|
||||||
@@ -418,7 +447,8 @@ async function sendLastGeneration() {
|
|||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
message: lastGeneration,
|
message: lastGeneration,
|
||||||
channel: 'default'
|
channel: 'default',
|
||||||
|
user_id: userId
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -839,8 +869,21 @@ function addSystemMessage(message) {
|
|||||||
// Envoi d'un message via le chat
|
// Envoi d'un message via le chat
|
||||||
async function sendChatMessage() {
|
async function sendChatMessage() {
|
||||||
const message = chatInput.value.trim();
|
const message = chatInput.value.trim();
|
||||||
|
const userId = parseInt(document.getElementById('chat-user-select').value);
|
||||||
|
|
||||||
|
console.log('Debug - Chat Message:', message);
|
||||||
|
console.log('Debug - Chat User ID:', userId);
|
||||||
|
console.log('Debug - Chat User ID type:', typeof userId);
|
||||||
|
console.log('Debug - Chat Selector value:', document.getElementById('chat-user-select').value);
|
||||||
|
|
||||||
if (!message) return;
|
if (!message) return;
|
||||||
|
|
||||||
|
// Vérifier si l'utilisateur est valide (pas NaN et dans la plage des utilisateurs)
|
||||||
|
if (isNaN(userId) || userId < 0 || userId >= currentUsers.length) {
|
||||||
|
showToast('Veuillez sélectionner un utilisateur valide', 'error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Trouver le premier flux actif
|
// Trouver le premier flux actif
|
||||||
const activeFlux = bot_controller.flux_list.find(flux => flux.active);
|
const activeFlux = bot_controller.flux_list.find(flux => flux.active);
|
||||||
if (!activeFlux) {
|
if (!activeFlux) {
|
||||||
@@ -855,7 +898,8 @@ async function sendChatMessage() {
|
|||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
message: message
|
message: message,
|
||||||
|
user_id: userId
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -963,6 +1007,7 @@ async function loadUsers() {
|
|||||||
const response = await fetch(`${API_BASE}/api/config/users`);
|
const response = await fetch(`${API_BASE}/api/config/users`);
|
||||||
currentUsers = await response.json();
|
currentUsers = await response.json();
|
||||||
renderUsers();
|
renderUsers();
|
||||||
|
updateUserSelectors(); // Mettre à jour les sélecteurs après le chargement
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Erreur lors du chargement des utilisateurs:', error);
|
console.error('Erreur lors du chargement des utilisateurs:', error);
|
||||||
}
|
}
|
||||||
@@ -1010,6 +1055,53 @@ function renderUsers() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`).join('');
|
`).join('');
|
||||||
|
|
||||||
|
// Mettre à jour les sélecteurs d'utilisateurs
|
||||||
|
updateUserSelectors();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mettre à jour les sélecteurs d'utilisateurs dans l'interface
|
||||||
|
function updateUserSelectors() {
|
||||||
|
console.log('Debug - updateUserSelectors called');
|
||||||
|
console.log('Debug - currentUsers:', currentUsers);
|
||||||
|
|
||||||
|
const selectors = [
|
||||||
|
'custom-message-user',
|
||||||
|
'chat-user-select'
|
||||||
|
];
|
||||||
|
|
||||||
|
selectors.forEach(selectorId => {
|
||||||
|
const selector = document.getElementById(selectorId);
|
||||||
|
if (selector) {
|
||||||
|
console.log(`Debug - Updating selector: ${selectorId}`);
|
||||||
|
|
||||||
|
// Sauvegarder la sélection actuelle
|
||||||
|
const currentValue = selector.value;
|
||||||
|
console.log(`Debug - Current value: ${currentValue}`);
|
||||||
|
|
||||||
|
// Vider le sélecteur avec une valeur par défaut différente
|
||||||
|
selector.innerHTML = '<option value="-1">Sélectionner un utilisateur...</option>';
|
||||||
|
|
||||||
|
// Ajouter les utilisateurs
|
||||||
|
currentUsers.forEach((user, index) => {
|
||||||
|
const option = document.createElement('option');
|
||||||
|
option.value = index.toString(); // Convertir en chaîne
|
||||||
|
option.textContent = `${user.tw_acc_pseudo} ${user.charactere}`;
|
||||||
|
selector.appendChild(option);
|
||||||
|
console.log(`Debug - Added option: value=${index.toString()}, text=${user.tw_acc_pseudo} ${user.charactere}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Restaurer la sélection si elle était valide
|
||||||
|
if (currentValue && currentValue !== '-1' && currentValue !== '0') {
|
||||||
|
selector.value = currentValue;
|
||||||
|
console.log(`Debug - Restored value: ${currentValue}`);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log(`Debug - Selector not found: ${selectorId}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('Debug - Selectors updated');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ouvrir le modal pour ajouter un utilisateur
|
// Ouvrir le modal pour ajouter un utilisateur
|
||||||
@@ -1054,47 +1146,34 @@ async function saveUser() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let response;
|
const url = userId ? `${API_BASE}/api/config/users/${userId}` : `${API_BASE}/api/config/users`;
|
||||||
if (userId === '') {
|
const method = userId ? 'PUT' : 'POST';
|
||||||
// Ajouter un nouvel utilisateur
|
|
||||||
response = await fetch(`${API_BASE}/api/config/users`, {
|
const response = await fetch(url, {
|
||||||
method: 'POST',
|
method: method,
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
tw_acc_pseudo: pseudo,
|
tw_acc_pseudo: pseudo,
|
||||||
tw_acc_token: token,
|
tw_acc_token: token,
|
||||||
charactere: charactere
|
charactere: charactere
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
// Modifier un utilisateur existant
|
|
||||||
response = await fetch(`${API_BASE}/api/config/users/${userId}`, {
|
|
||||||
method: 'PUT',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json'
|
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
|
||||||
tw_acc_pseudo: pseudo,
|
|
||||||
tw_acc_token: token,
|
|
||||||
charactere: charactere
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const result = await response.json();
|
const result = await response.json();
|
||||||
|
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
showToast(userId === '' ? 'Utilisateur ajouté' : 'Utilisateur modifié', 'success');
|
showToast(userId ? 'Utilisateur modifié' : 'Utilisateur ajouté', 'success');
|
||||||
bootstrap.Modal.getInstance(document.getElementById('addUserModal')).hide();
|
bootstrap.Modal.getInstance(document.getElementById('addUserModal')).hide();
|
||||||
await loadUsers();
|
await loadUsers();
|
||||||
|
updateUserSelectors(); // Mettre à jour les sélecteurs
|
||||||
} else {
|
} else {
|
||||||
showToast(result.error || 'Erreur lors de la sauvegarde', 'error');
|
showToast(result.error || 'Erreur lors de la sauvegarde', 'error');
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Erreur:', error);
|
console.error('Erreur:', error);
|
||||||
showToast('Erreur lors de la sauvegarde de l\'utilisateur', 'error');
|
showToast('Erreur lors de la sauvegarde', 'error');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1112,13 +1191,14 @@ async function deleteUser(userId) {
|
|||||||
const result = await response.json();
|
const result = await response.json();
|
||||||
|
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
showToast('Utilisateur supprimé avec succès', 'success');
|
showToast('Utilisateur supprimé', 'success');
|
||||||
await loadUsers();
|
await loadUsers();
|
||||||
|
updateUserSelectors(); // Mettre à jour les sélecteurs
|
||||||
} else {
|
} else {
|
||||||
showToast(result.error || 'Erreur lors de la suppression', 'error');
|
showToast(result.error || 'Erreur lors de la suppression', 'error');
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Erreur:', error);
|
console.error('Erreur:', error);
|
||||||
showToast('Erreur lors de la suppression de l\'utilisateur', 'error');
|
showToast('Erreur lors de la suppression', 'error');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -140,6 +140,12 @@
|
|||||||
<h5><i class="fas fa-keyboard me-2"></i>Envoyer Message Personnalisé</h5>
|
<h5><i class="fas fa-keyboard me-2"></i>Envoyer Message Personnalisé</h5>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="custom-message-user" class="form-label">Utilisateur</label>
|
||||||
|
<select class="form-select user-selector" id="custom-message-user">
|
||||||
|
<option value="-1">Sélectionner un utilisateur...</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<textarea class="form-control" id="custom-message" rows="3" placeholder="Tapez votre message ici..."></textarea>
|
<textarea class="form-control" id="custom-message" rows="3" placeholder="Tapez votre message ici..."></textarea>
|
||||||
</div>
|
</div>
|
||||||
@@ -259,6 +265,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer">
|
<div class="card-footer">
|
||||||
|
<div class="mb-2">
|
||||||
|
<label for="chat-user-select" class="form-label small">Utilisateur</label>
|
||||||
|
<select class="form-select form-select-sm user-selector" id="chat-user-select">
|
||||||
|
<option value="-1">Sélectionner un utilisateur...</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="text" class="form-control" id="chat-input" placeholder="Tapez un message..." disabled>
|
<input type="text" class="form-control" id="chat-input" placeholder="Tapez un message..." disabled>
|
||||||
<button class="btn btn-primary" type="button" onclick="sendChatMessage()" disabled>
|
<button class="btn btn-primary" type="button" onclick="sendChatMessage()" disabled>
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Script de test pour vérifier l'envoi de messages
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Ajouter le chemin vers les modules
|
||||||
|
sys.path.append('.')
|
||||||
|
|
||||||
|
from fonction.first_class import messageTwitch
|
||||||
|
|
||||||
|
def test_send_message():
|
||||||
|
"""Test de l'envoi de message"""
|
||||||
|
try:
|
||||||
|
# Créer une instance de messageTwitch
|
||||||
|
msg_bot = messageTwitch("config/user.json", "test_channel")
|
||||||
|
|
||||||
|
# Tester l'envoi d'un message
|
||||||
|
print("Test d'envoi de message...")
|
||||||
|
msg_bot.send_message("Test message from bot")
|
||||||
|
print("✓ Test réussi !")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"✗ Erreur lors du test: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
print("🧪 Test de l'envoi de messages")
|
||||||
|
print("=" * 40)
|
||||||
|
|
||||||
|
if test_send_message():
|
||||||
|
print("\n✅ Tous les tests sont passés !")
|
||||||
|
else:
|
||||||
|
print("\n❌ Certains tests ont échoué.")
|
||||||
+11
-3
@@ -7,6 +7,11 @@ import time
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
# Ajouter le chemin de l'environnement virtuel au PYTHONPATH
|
||||||
|
venv_path = os.path.join(os.path.dirname(__file__), 'env', 'lib', 'python3.10', 'site-packages')
|
||||||
|
if venv_path not in sys.path:
|
||||||
|
sys.path.insert(0, venv_path)
|
||||||
|
|
||||||
# Import des classes du bot
|
# Import des classes du bot
|
||||||
sys.path.append('.')
|
sys.path.append('.')
|
||||||
from fonction.first_class import RecordTwitch, Subtitle_translation, IA_generator, messageTwitch, TwitchChatBot, storage
|
from fonction.first_class import RecordTwitch, Subtitle_translation, IA_generator, messageTwitch, TwitchChatBot, storage
|
||||||
@@ -335,6 +340,7 @@ def send_message():
|
|||||||
data = request.json
|
data = request.json
|
||||||
message = data.get('message')
|
message = data.get('message')
|
||||||
channel = data.get('channel', 'default')
|
channel = data.get('channel', 'default')
|
||||||
|
user_id = data.get('user_id', 0) # Nouveau paramètre pour choisir l'utilisateur
|
||||||
|
|
||||||
if not message:
|
if not message:
|
||||||
return jsonify({'error': 'Message requis'}), 400
|
return jsonify({'error': 'Message requis'}), 400
|
||||||
@@ -342,7 +348,8 @@ def send_message():
|
|||||||
# Trouver le bot de message pour ce canal
|
# Trouver le bot de message pour ce canal
|
||||||
try:
|
try:
|
||||||
msg_bot = messageTwitch("config/user.json", channel)
|
msg_bot = messageTwitch("config/user.json", channel)
|
||||||
msg_bot.send_message(message)
|
# Utiliser send_message_user au lieu de send_message pour spécifier l'utilisateur
|
||||||
|
msg_bot.send_message_user(user_id, message)
|
||||||
return jsonify({'success': True})
|
return jsonify({'success': True})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify({'error': str(e)}), 500
|
return jsonify({'error': str(e)}), 500
|
||||||
@@ -393,6 +400,7 @@ def send_chat_message(flux_id):
|
|||||||
"""Envoyer un message dans le chat d'un flux spécifique"""
|
"""Envoyer un message dans le chat d'un flux spécifique"""
|
||||||
data = request.json
|
data = request.json
|
||||||
message = data.get('message', '')
|
message = data.get('message', '')
|
||||||
|
user_id = data.get('user_id', 0) # Nouveau paramètre pour choisir l'utilisateur
|
||||||
|
|
||||||
if not message:
|
if not message:
|
||||||
return jsonify({'error': 'Message requis'}), 400
|
return jsonify({'error': 'Message requis'}), 400
|
||||||
@@ -408,9 +416,9 @@ def send_chat_message(flux_id):
|
|||||||
if not flux:
|
if not flux:
|
||||||
return jsonify({'error': 'Flux non trouvé'}), 404
|
return jsonify({'error': 'Flux non trouvé'}), 404
|
||||||
|
|
||||||
# Envoyer le message
|
# Envoyer le message avec l'utilisateur spécifié
|
||||||
msg_bot = messageTwitch("config/user.json", flux['twitchname'])
|
msg_bot = messageTwitch("config/user.json", flux['twitchname'])
|
||||||
msg_bot.send_message(message)
|
msg_bot.send_message_user(user_id, message)
|
||||||
|
|
||||||
return jsonify({'success': True})
|
return jsonify({'success': True})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user