Rajout d'une fonctionnalité GPIO sur un bot twitch
Bonjour,
Je viens vers vous car j'ai un problème avec mon petit bot twitch que je n'arrive pas à comprendre.
il y a quelque temps j'ai réussi à réaliser ce petit programme qui marche très bien et dont je suis très content.
Afin de pousser un peux plus la chose j'ai voulu intégrer quelques commandes liées avec des boutons pour envoyer du texte grâce à mon petit Raspberry.
j'ai donc ajouté les ligne de codes (celle en jaune) mais malheureusement elle ne répondent pas à mes actions sur mon bouton poussoir.
Bien sûre je me suis creusé la tête mais le mystère reste complet pour moi et je ne comprend absolument pas pourquoi elle ne fonctionnent pas.
Biensure je ne recherche pas une ""simple"" correction mais bien à comprendre le pourquoi du comment.
Je vous remercie d'avance pour votre aide.
Voici le programme en question :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| import socket
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP)
[/COLOR]
### Options
SERVER = "irc.twitch.tv" # server
PORT = 6667 # port
### Options (Edit this)
PASS = "oauth:yc2fz4upxwi6k7tzrv58y1rj7h3s3k" # bot password can be found on https://twitchapps.com/tmi/
BOT = "BOT" # Bot's name [NO CAPITALS]
CHANNEL = "pixelle_123" # Channal name [NO CAPITALS]
OWNER = "your_name" # Owner's name [NO CAPITALS]
### Functions
def sendMessage(s, message):
messageTemp = "PRIVMSG #" + CHANNEL + " :" + message
s.send((messageTemp + "\r\n").encode())
def getUser(line):
separate = line.split(":", 2)
user = separate[1].split("!", 1)[0]
return user
def getMessage(line):
global message
try:
message = (line.split(":", 2))[2]
except:
message = ""
return message
def joinchat():
readbuffer_join = "".encode()
Loading = True
while Loading:
readbuffer_join = s.recv(1024)
readbuffer_join = readbuffer_join.decode()
temp = readbuffer_join.split("\n")
readbuffer_join = readbuffer_join.encode()
readbuffer_join = temp.pop()
for line in temp:
Loading = loadingCompleted(line)
sendMessage(s, "Chat room joined!")
print("Bot has joined " + CHANNEL + " Channel!")
def loadingCompleted(line):
if ("End of /NAMES list" in line):
return False
else:
return True
### Code runs
s_prep = socket.socket()
s_prep.connect((SERVER, PORT))
s_prep.send(("PASS " + PASS + "\r\n").encode())
s_prep.send(("NICK " + BOT + "\r\n").encode())
s_prep.send(("JOIN #" + CHANNEL + "\r\n").encode())
s = s_prep
joinchat()
readbuffer = ""
def Console(line):
# gets if it is a user or twitch server
if "PRIVMSG" in line:
return False
else:
return True
while True:
try:
readbuffer = s.recv(1024)
readbuffer = readbuffer.decode()
temp = readbuffer.split("\n")
readbuffer = readbuffer.encode()
readbuffer = temp.pop()
except:
temp = ""
for line in temp:
if line == "":
break
# So twitch doesn't timeout the bot.
if "PING" in line and Console(line):
msgg = "PONG tmi.twitch.tv\r\n".encode()
s.send(msgg)
print(msgg)
break
# get user
user = getUser(line)
# get message send by user
message = getMessage(line)
# for you to see the chat from CMD
print(user + " > " + message)
# sends private msg to the user (start line)
PMSG = "/w " + user + " "
################################# Command ##################################
############ Here you can add as meny commands as you wish of ! ############
############################################################################
if user == OWNER and "!command" in message:
sendMessage(s, "This can only be used by the owner")
break
if "!private" in message:
sendMessage(s, PMSG + "This is a private message send to the user")
break
if "!global" in message:
sendMessage(s, "This is a global message send to the chat")
break
if GPIO.input(40) == 0:
sendMessage(s, "Bonjour") # j’envoie le message "Bonjour" sur le tchat
print("Message bonjour envoyé") # je signal que ma commande est envoyé
break
############################################################################ |