It's Source(Channel, User), not Source(User, Channel). This explains one or two bugs.
Inserted isinstance check to avoid User/Channel mixups and prevent channelDict 'contamination' with bad Channel() instances. Tested with one or two runs, seeing no more warnings for the moment.