The problem is that your expression is evaluated like this:
if ("hello") or ("hi") or ("greetings" in text")
A string literal is always true, hence your program always prints "Hello..."
Instead, you could create a set of the keywords from the input and compare it to a set that contains the greetings. If these sets have an intersection (i.e. they are not disjoint), only then you print your message.
The code would be something like this:
greetings = { "hi", "hello", "greetings" }
interests = { "enjoy", "enjoys", "like", "likes", "fun" }
while True:
keywords = set(input().lower().split())
if not keywords.isdisjoint(greetings):
print('Hello! I\'m PyChat, an artificial intelligence. How may I help you?')
elif not keywords.isdisjoint(interests):
print('I also enjoy that, what a coincidence!')